从语法上很容易理解啊:
A a = b; //定义并通过拷贝来初始化,因此会调用拷贝构造函数。
A a; //定义并采用默认初始化,因此会调用默认构造函数。
a = b; //这里不是定义,因为前面已经定义过了,因此不会有任何“初始化”,而仅仅是赋值,会用 operator=。
#include <iostream>
using namespace std;
class Test
{
public:
Test(){i=0;}
Test(int p){x=p;}
Test (const Test &p) {i=p.show();}
Test &operator=(const Test &p){i=p.show(); return *this;}
int show(){return i;}
private:
int i;
};
int main()
{
Test a1(100);
Test b=a1; //定义并且初始化
b=a1; //已经定义,现赋值
return 0;
}
本文通过一个C++示例类,详细解释了拷贝构造函数与赋值操作符的区别。展示了在不同情况下(如定义与初始化、赋值等)如何调用相应的构造函数与赋值操作符。
96

被折叠的 条评论
为什么被折叠?



