这是一个愚蠢的简单问题,我正在学习C++并拥有以下课程......
class Client
{
public:
Window getWindow() { return window; };
private:
Window window;
};
Run Code Online (Sandbox Code Playgroud)
而我想知道的是会getWindow()返回对我的私人window对象或副本的引用吗?我应该在这里使用指针吗?
让我感到害怕的是,在Java中,新关键字使得对象的创建时间和位置变得非常清晰,在cpp中它不太清楚,而且我对C的体验使事情变得更糟.
谢谢,-Cody
除非您明确声明返回引用,否则它将返回副本.请注意,至少在c ++中返回指针不是一个好主意
要返回引用,您必须添加&到返回类型
class Client
{
public:
Window& getWindow() { return window; };
private:
Window window;
};
Run Code Online (Sandbox Code Playgroud)
请注意,如果您担心返回值的开销,您可能会确信所有最新的编译器在某种程度上都有效return value optimization.此外,如果您使用的是C++ 11,您还可以利用移动语义.