C++提供了一些特殊的成员函数,它们会在一定条件下自动创建:
- 默认构造函数
- 复制/拷贝构造函数
- 移动构造函数
- 赋值运算符
- 移动赋值运算符
- 地址运算符
带参数的构造函数也可以是默认构造函数, 只要所有参数都有默认值. 但是最终的类只能有一个构造函数, 否则会在调用时产生二义性.
按值传递参数或返回值时, 会产生对象副本, 此时就调用了复制构造函数, 使用引用可以避免频繁调用复制构造函数.
试题: 编写string
类的构造函数, 析构函数, 拷贝构造函数和赋值函数.
子类析构时要调用父类的析构函数吗?
调用(自动调用, 无需手动调用)
析构函数调用的次序是先调用派生类的析构, 后调用基类的析构, 也就是说在基类的析构函数调用的时候, 派生类的信息已经全部销毁了.
定义一个对象时先调用基类的构造函数, 然后调用派生类的构造函数, 析构的时候恰好相反, 先调用派生类的析构函数, 然后调用基类的析构函数