最近老是有人问我拷贝构造函数和赋值构造函数。说实话,我会用,但这个概念还真是搞不太清楚,真烦!概念问题少问我!
学习笔记:
1. 析构函数
每个类只有一个析构函数
2. 构造函数
每个类可以有多个构造函数
包括 默认构造函数、拷贝构造函数、赋值构造函数
3. 例子:
class A
{
public:
A(); 无参数构造函数
A(int t); 有参数构造函数
A(const A &a); 拷贝构造函数
A& operator=(const A &a); 赋值构造函数
~A(); 析构函数
private:
int data;
};
A a; 调用无参数构造函数,如果没有无参数构造函数,则调用默认构造函数
A b(123); 调用有参数构造函数
A c(b); 调用拷贝构造函数
A d = c; 调用拷贝构造函数
a = b; 调用赋值构造函数
4. 注意
在实现赋值构造函数的时候,要考虑到自赋值,即a=a的情况。
值得注意的是,
A d = c; 这个过程调用的拷贝构造函数。
赋值构造函数的两边都是已经构造完成的两个实体。