C++构造函数、拷贝构造函数、赋值运算函数
这篇博客来看一下构造函数、拷贝构造函数、赋值运算函数的区别和调用时机
class Test{
public:
//无参构造函数
Test(){
printf("Enter ctr!\n");
}
//拷贝构造函数
Test(const Test& other){
printf("Enter copy!\n");
}
//赋值运算函数
Test& operator= (const Test& other){
printf("Enter assign!\n");
return *this;
}
};
int main(){
Test a;//调用无参构造函数
Test b = a;//调用拷贝构造函数,划重点,这里调用的是拷贝构造函数
Test c(a);//调用拷贝构造函数
a = b;//调用赋值运算函数
}
不出意外上述程序会输出如下结果:
Enter ctr!
Enter copy!
Enter copy!
Enter assign!
所以Test a;调用的是无参构造函数,Test b = a; Test c(a);调用的是拷贝构造函数,a = b才是调用的赋值运算符!!!