默认构造函数、拷贝构造函数、析构函数、赋值构造函数

来源:互联网 发布:mac长时间待机不休眠 编辑:程序博客网 时间:2024/06/08 10:08

最近老是有人问我拷贝构造函数和赋值构造函数。说实话,我会用,但这个概念还真是搞不太清楚,真烦!概念问题少问我!


学习笔记:

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; 这个过程调用的拷贝构造函数。

赋值构造函数的两边都是已经构造完成的两个实体。

0 0