C++ 如何通过引用返回对象
据我所知,这是我的参考类&ref=b;之后b=ref;那么c=b;SomeClass&ref2=c;然后c=ref2。但是,当b=ref或c=ref2时,我是否正在调用我重新加载的运算符=开关?类似于a.operator=(ref)的东西 如果你有:C++ 如何通过引用返回对象,c++,oop,reference,operator-overloading,C++,Oop,Reference,Operator Overloading,据我所知,这是我的参考类&ref=b;之后b=ref;那么c=b;SomeClass&ref2=c;然后c=ref2。但是,当b=ref或c=ref2时,我是否正在调用我重新加载的运算符=开关?类似于a.operator=(ref)的东西 如果你有: void operator=(const SomeClass& l_copy) { this->a = l_copy.a; } 那么您的作业将限于: b = a; c = b; 通过返回引用,可以按
void operator=(const SomeClass& l_copy)
{
this->a = l_copy.a;
}
那么您的作业将限于:
b = a;
c = b;
通过返回引用,可以按如下方式链接分配:
c = b = a;
// c.operator = (b.operator = (a));
//1: b.operator= ("ref a")
//2: c.operator= ("ref b")
通过重载操作符=in
SomeClass
,您正在执行复制赋值lhs=rhs
(例如:c=b
,c是lhs
,b是rhs
)。因为它返回一个匹配SomeClass&operator=
预期参数类型的引用,所以可以链接多个副本分配,例如c=b=a
c=b=a代码>与c=(b=a)相同
,与c.operator=(b.operator=(a))相同代码>。没有为a
调用运算符=
。请注意,赋值具有从右到左的关联性<因此,code>b.operator=(a)
返回对b
的引用,该引用用作c.operator=
调用的参数。我问过当b=ref(SomeClass&ref=b)时对象是如何通过引用传输的。我是否使用我的重新加载的运算符=?什么是“重新加载”的运算符?你是在问SomeClass&ref=b;b=参考代码>案例?如果是这样,为什么您的代码会做一些完全不同的事情?其中没有ref
。请编辑代码以匹配您的问题。@ZELIBOBA您可以重写c=b=a代码>asb=a;SomeClass&ref=b;c=参考代码>也具有相同的效果。最后的c=b
和c=ref
之间没有区别。还是不清楚你的问题是什么,对不起。
c = b = a;
// c.operator = (b.operator = (a));
//1: b.operator= ("ref a")
//2: c.operator= ("ref b")