2012-04-10 29 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)?