C ++,类构造函数中参数名后面的&符号

时间:2014-01-10 23:25:44

标签: c++ constructor ampersand

systemclass.h

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 个答案:

答案 0 :(得分:6)

&表示参数是通过引用而不是值传递的。您选择的特定成员恰好是复制构造函数,即复制值时调用的构造函数。如果不能通过值来获取它的参数,因为通过复制它会产生值......

类型const SystemClass&(或将const放入正确的位置SystemClass const&)是对const类型的SystemClass对象的引用。< / p>