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

Eae*_*Eae 2 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;
};
Run Code Online (Sandbox Code Playgroud)

systemclass.cpp

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


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


SystemClass::~SystemClass()
{
}
Run Code Online (Sandbox Code Playgroud)

我的问题是关于systemclass.h中的定义:

SystemClass(const SystemClass&);
Run Code Online (Sandbox Code Playgroud)

我不记得曾经在这样的类名之后看过"&".的意义是什么:

const SystemClass&
Run Code Online (Sandbox Code Playgroud)

代码来自rastertek.com的C++ DirectX11教程4.

Die*_*ühl 6

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

类型const SystemClass&(或者,放入const正确的位置SystemClass const&)是const对类型对象的引用SystemClass.

  • @RayToal我不确定我理解你所做的区别.通过引用传递是一个概念性的想法,通常的底层实现是"传递指向对象的指针并在需要时静默地取消引用指针". (2认同)