Yin*_*ong 4 c++ copy-constructor assignment-operator
假设T是一个C++类,如果我这样做T a = b;,是复制构造函数还是赋值运算符?
我当前的实验显示复制构造函数被调用,但不明白为什么.
#include <iostream>
using namespace std;
class T {
public:
// Default constructor.
T() : x("Default constructor") { }
// Copy constructor.
T(const T&) : x("Copy constructor") { }
// Assignment operator.
T& operator=(const T&) { x = "Assignment operator"; }
string x;
};
int main() {
T a;
T b = a;
cout << "T b = a; " << b.x << "\n";
b = a;
cout << "b = a; " << b.x << "\n";
return 0;
}
$ g++ test.cc
$ ./a.out
T b = a; Copy constructor
b = a; Assignment operator
Run Code Online (Sandbox Code Playgroud)
谢谢!
调用复制构造函数是因为
T a = b;
Run Code Online (Sandbox Code Playgroud)
具有相同的效果
T a(b);
Run Code Online (Sandbox Code Playgroud)
这是一个初始化,而不是一个任务.长话短说,这就是语言的运作方式.