C++传递成员字段

Cod*_*ith 0 c++ pointers

这是一个愚蠢的简单问题,我正在学习C++并拥有以下课程......

class Client
{
public:
    Window getWindow() { return window; };

private:
    Window window;
};
Run Code Online (Sandbox Code Playgroud)

而我想知道的是会getWindow()返回对我的私人window对象或副本的引用吗?我应该在这里使用指针吗?

让我感到害怕的是,在Java中,新关键字使得对象的创建时间和位置变得非常清晰,在cpp中它不太清楚,而且我对C的体验使事情变得更糟.

谢谢,-Cody

Abh*_*jit 6

除非您明确声明返回引用,否则它将返回副本.请注意,至少在c ++中返回指针不是一个好主意

要返回引用,您必须添加&到返回类型

class Client
{
public:
    Window& getWindow() { return window; };

private:
    Window window;
};
Run Code Online (Sandbox Code Playgroud)

请注意,如果您担心返回值的开销,您可能会确信所有最新的编译器在某种程度上都有效return value optimization.此外,如果您使用的是C++ 11,您还可以利用移动语义.