#include <iostream>
using namespace std;
class A
{
int x;
public:
A(int a)
{
x = a;
cout << "CTOR CALLED";
}
A(A &t)
{
cout << "COPY CTOR CALLED";
}
void display()
{
cout << "Random stuff";
}
A operator = (A &d)
{
d.x = x;
cout << "Assignment operator called";
return *this;
}
};
int main()
{
A a(3), b(4);
a = b;
return 0;
}
這段代碼的輸出是:爲什麼在這裏調用拷貝構造函數?
CTOR CALLED
CTOR CALLED
賦值運算符稱爲
COPY CTOR CALLED
當我使用Visual Studio中的手錶這表明甚至在調用重載賦值操作符之前,x
的值a
已被更改。
那麼爲什麼在這裏調用拷貝構造函數呢?
只是注意的參數應該是const的參考'A&運算符=(常量&d){...}'同樣的拷貝構造函數。 –
並且您想要以其他方式複製'x'的值。即'x = d.x;' –