我一直在尝试理解 ctor 和运算符重载。
#include <iostream>
using namespace std;
class number {
int n;
public:
number(int i=0):n(i) { cout<<"in ctor"<<endl; }
~number() { cout<<"in dtor"<<endl; }
number(const number& obj):n(obj.n) {
cout<<"in copy ctor"<<endl; }
number operator+(const number & obj) {
return number(n+obj.n); }
number operator=(const number &rhs) {
n = rhs.n; cout<<"in assignemnt opr"<<endl; }
void disp() {cout<<n<<endl;}
};
int main()
{
number one(1),two(2);
number three =one + two; //was expecting copy ctor being called here
three.disp();
}
当我运行上面的代码时,我得到了以下输出
我知道在重载运算符中调用了三个构造函数one
和two
对象un-named
。+
我无法理解three
是如何构造的。我认为应该调用复制ctor。但似乎不是。有人可以解释一下吗。谢谢。