gpt4 book ai didi

c++ - 关于返回对对象的引用

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:17 27 4
gpt4 key购买 nike

不,这不是关于每个人都会犯的路过本地人的错误。我只是想了解返回对您传入的对象的引用(我正在阅读入门书)。

所以如果我有这样的函数:

const foo & foo::function2(const foo & val) const
{
using namespace std;
return *this;
}

然后我主要这样做:

foo object1;
object1.someproperty = 7;

foo object2 = object1.function2(object1);
object2.someproperty = 5;

cout << &object1 << endl;
cout << &object2 << endl;

当我通过引用返回时,object2 不应该与 object1 具有相同的地址(和属性)吗?不应该改变一个对象中的“某些属性”来改变另一个对象中的值吗?或者,返回对对象的引用是否只是将值复制到新对象中?

似乎发生了同样的事情,就好像我刚刚说我要返回一个 foo 对象而不是对一个对象的引用。

最佳答案

foo object2 = object1.function2(object1);

function2() 返回对 object1 的引用;然后调用 foo 复制构造函数将 object1 复制到 object2 中,因为 object2 被声明为 foo 对象。

如果您将 object2 声明为常量引用:

const foo& object2 = object1.function2(object1);

然后 object2 将是对 object1 的引用。

关于c++ - 关于返回对对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233369/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com