c++拷贝构造函数遇上等号重载
参加的笔试题⽬,有个题⽬是拷贝构造函数调⽤,同时定义了“=”重载,这个时候 =重载函数是否会被调⽤?做了个实验,调⽤拷贝构造函数进⾏初始化的时候,是不会调⽤=重载的。
#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这句调⽤了=重载。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。