提问人:tagelicht 提问时间:3/15/2017 最后编辑:einpoklumtagelicht 更新时间:3/15/2017 访问量:62
返回对变量的引用:有意义/有用?
Returning a reference to a variable: Meaningful/useful?
问:
假设您有以下代码:
MyObject someObject;
MyObject& getReferenceToObject() {
return someObject;
}
现在考虑以下调用方式:getReferenceToObject()
void MyFunction() {
MyObject obj = getReferenceToObject(); // 1.
MyObject& obj = getReferenceToObject(); // 2.
}
编译器允许同时 1.和 2.我的问题是,如果我像 1 一样做,Object 会被复制到变量中,还是会指向?并做 2.有什么意义吗?obj
obj
someObject
答:
4赞
Caleth
3/15/2017
#1
版本 1。初始化一个 MyObject,使用构造函数(或类似函数)调用。 是obj
MyObject::MyObject(const MyObject & other);
obj
someObject
版本 2。初始化对 MyObject(也称为 obj)的引用,以便它将相同的对象命名为 。someObject
如果发生突变,版本 1 不会更改,版本 2 会更改。obj
someObject
评论
0赞
tagelicht
3/15/2017
还有 5 分钟:(
1赞
kadina
3/15/2017
#2
这取决于 someObject 的范围。第一个将只复制整个对象。但是,如果您打算以第二种方式使用它,则 someObject 应该是全局对象或静态对象。因为一旦你从 getReferenceToObject() 返回,堆栈就会消失,你无法访问函数中定义的本地对象。因此,返回本地对象作为引用是行不通的。
评论
0赞
tagelicht
3/15/2017
哦,我在这里有点不清楚,它不打算成为局部变量,而是全局/静态变量或类成员(如果是类方法:D),正如您所建议的那样。someObject
getReferenceToObject
0赞
kadina
3/15/2017
确切的tagelicht
评论