2014-01-10 74 views
1

systemclass.hC++,在類的構造函數的參數名稱

class SystemClass 
{ 
public: 
    SystemClass(); 
    SystemClass(const SystemClass&); 
    ~SystemClass(); 

    bool Initialize(); 
    void Shutdown(); 
    void Run(); 

    LRESULT CALLBACK MessageHandler(HWND, UINT, WPARAM, LPARAM); 

private: 
    bool Frame(); 
    void InitializeWindows(int&, int&); 
    void ShutdownWindows(); 

private: 
    LPCWSTR m_applicationName; 
    HINSTANCE m_hinstance; 
    HWND m_hwnd; 

    InputClass* m_Input; 
    GraphicsClass* m_Graphics; 
}; 

systemclass.cpp後符號

SystemClass::SystemClass() 
{ 
    m_Input = 0; 
    m_Graphics = 0; 
} 


SystemClass::SystemClass(const SystemClass& other) 
{ 
} 


SystemClass::~SystemClass() 
{ 
} 

我的問題是關於定義在systemclass.h:

SystemClass(const SystemClass&); 

我不記得在這樣的班級名稱後面看到「&」。什麼意思:

const SystemClass& 

該代碼來自rastertek.com的C++ DirectX11教程4。

+1

看看http://stackoverflow.com/questions/2564873/reference-parameters-in-c-very-basic-example-please –

+1

其複製構造函數 – BWG

回答

6

&表示參數是按引用而不是按值傳遞的。您選擇的特定成員碰巧是複製構造函數,即複製值時調用的構造函數。如果不能通過值取它的參數作爲值將通過複製來製造...

類型const SystemClass&(或者,把const到正確的位置SystemClass const&)是SystemClass類型的const對象的引用。

+1

我一直認爲'&'將參數標記爲指示參數_aliases_參數。當然,實現參數和參數別名的一個途徑是通過引用傳遞。你知道C++標準是否要求通過引用傳遞(一個實現概念),或者它只是意味着別名(其實現很可能是通過引用傳遞)。 –

+2

@RayToal我不確定我是否理解你所做的區別。按引用傳遞是一個概念性概念,通常的底層實現是「傳遞一個指向對象的指針,並在需要時靜靜地提取指針」。 –