这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C++ 11时,成语是否会改变?
虽然在许多地方已经提到过,但我们没有任何单一的"它是什么"问题和答案,所以在这里.以下是前面提到的地方的部分列表:
c++ c++-faq copy-constructor assignment-operator copy-and-swap
我正在修改我的C++,我正在处理运算符重载,特别是"="(赋值)运算符.我在网上看到并且遇到了讨论它的多个主题.在我自己的笔记中,我把所有的例子都记下来了
class Foo
{
public:
int x;
int y;
void operator=(const Foo&);
};
void Foo::operator=(const Foo &rhs)
{
x = rhs.x;
y = rhs.y;
}
Run Code Online (Sandbox Code Playgroud)
在我在网上找到的所有参考文献中,我注意到操作符返回对源对象的引用.为什么返回对象的引用的正确方法而不是什么都没有?
我在看C++类的赋值运算符:
A& operator= (const A& x) {
// do something
return *this;
}
Run Code Online (Sandbox Code Playgroud)
但是,为什么我们需要返回*这个?因为如果我们打电话
a = bb是operator =的参数,这指向a.//通过从b复制,做了一些已经改变了a的正确内容的东西.如何获得返回类型?这次回归的收件人是什么?
或者,这是为了促进a = b = c?
请指教..谢谢!