最近学 C++, 拷贝赋值运算符 返回值完全可以是空。
代码如下, 我总结这只是个函数调用, 没有返回值一般没啥特别的鸟问题。
using namespace std;
class A { public : int Aa; int Ab; public: A(int i, int k):Aa(i), Ab(k) {
}
A & operator ==(const A& rhs)
{
cout << "这儿有一句傻逼代码" << endl;
return *this;
}
A & operator >=(const A& rhs)
{
cout << "这儿有另外一句傻逼代码" << endl;
Aa = rhs.Aa;
Ab = rhs.Ab;
return *this;
}
void operator =(const A& rhs)
{
cout << "这儿有一个拷贝赋值的傻逼代码" << endl;
Aa = rhs.Aa;
Ab = rhs.Ab;
//return *this;
}
}; int main() { std::cout << "Hello World!\n"; A *p1 = new A(1, 3); A *p = new A(2, 3);
A b(331,332);
cout << "B" << b.Aa << endl;
cout << "B" << b.Ab << endl;
b = *p;
cout << "B"<<b.Aa << endl;
cout << "B"<<b.Ab << endl;
}
为啥 我看人家开源项目中的拷贝赋值运算符, 一般都非要返回个引用 有老铁总结下这块吗?
1
ifanze 2019-11-30 17:13:27 +08:00 1
```
A a = xxxx; A b; A c; c = b = a; ``` |
2
secondwtq 2019-11-30 18:08:59 +08:00
那说明你还需要继续学 C++(或者放弃学 C++)
C++ 就是这样,它不会把用户(开发者)当傻逼,你可以做任何事情,它不会阻止你,但是要想玩的转,你最好知道自己在做什么 可以这样做 不代表 应该这样做 一起努力吧 |
3
c0011 2019-11-30 20:38:42 +08:00
这水平就开始看开源代码了?
|
4
coray 2019-11-30 21:47:13 +08:00
学 C++不能浮躁...
|
5
yulon 2019-12-01 00:03:26 +08:00 1
因为赋值运算符的语义就是可以连续赋值的,当然你也可以像标准流的输入输出运算符一样,通过魔改位移运算符来实现,这完全取决于你自己的用途。
但是运算符都没学过,就开始玩运算符重载的,也是虎。 |