参加完美世界的笔试题目,有个题目是拷贝构造函数调用,同时定义了“=”重载,这个时候 =重载函数是否会被调用?
做了个实验,调用拷贝构造函数进行初始化的时候,是不会调用=重载的。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class A {
private:
int a;
public:
int getA()
{
return a;
}
A() {
a = 1;
cout << "构造函数..." << endl;
}
A(const A &b)
{
this->a = b.a;
cout << "拷贝构造函数..." << endl;
}
void operator=(const A& b)
{
this->a = b.a + 1;
cout << "=重载.." << endl;
}
};
int main()
{
A a;
cout << a.getA() << endl;
A b = a;
cout << b.getA() << endl;
A c;
c = a;
cout << c.getA() << endl;
system("pause");
return 0;
}
输出结果为:
构造函数...
1
拷贝构造函数...
1
构造函数...
=重载..
2
请按任意键继续. . .
可见,在调用拷贝构造函数进行初始化的时候,并没有调用=重载,只有c = a这句调用了=重载。