2012-04-10 51 views
2

在查看某个Web服务器的某些现有代码时,我看到服务器类有一个main.cc文件和另一个server.hserver.cc对。C++中服务器实例的全局变量

// main.cc 
#include "server.h" 
int main() { 
    foo::server = new foo::Server(); 
    server->Serve(); // runs forever 
} 

// server.cc 
namespace foo { 
    Server *server; 

    // class member definitions ... 
} 

是不是有一个很好的理由不要在主要定义foo::Server *server

这种编码风格的优缺点是什么?

+0

经验法则:如果实际上不需要全局变量或指针,则不要使用全局变量或指针。 – 2012-04-10 19:55:29

回答

0

编辑

进行维护。这很直观,您可以在server.cc中定义foo::server。如果您只有一个变量,则不能直接看到该好处。但是说你有几十个变量。使用这种风格,你确切知道在哪里寻找定义。

+0

这是关于变量定义,而不是类定义。 – 2012-04-10 19:56:00

+0

@CatPlusPlus ooops你是对的。我编辑了我的答案。 – 2012-04-10 20:00:48

0

我认为这是类推的cout对象iostream lib。大多数时候只有一个ostream类的对象,那么为什么不创建一次可见的对象(其中包含iostrem)?