C++ 中的构造函数和析构函数

C++提供了一些特殊的成员函数,它们会在一定条件下自动创建:

  • 默认构造函数
  • 复制/拷贝构造函数
  • 移动构造函数
  • 赋值运算符
  • 移动赋值运算符
  • 地址运算符

带参数的构造函数也可以是默认构造函数, 只要所有参数都有默认值. 但是最终的类只能有一个构造函数, 否则会在调用时产生二义性.

按值传递参数或返回值时, 会产生对象副本, 此时就调用了复制构造函数, 使用引用可以避免频繁调用复制构造函数.

试题: 编写string类的构造函数, 析构函数, 拷贝构造函数和赋值函数.

子类析构时要调用父类的析构函数吗?

调用(自动调用, 无需手动调用)

析构函数调用的次序是先调用派生类的析构, 后调用基类的析构, 也就是说在基类的析构函数调用的时候, 派生类的信息已经全部销毁了.

定义一个对象时先调用基类的构造函数, 然后调用派生类的构造函数, 析构的时候恰好相反, 先调用派生类的析构函数, 然后调用基类的析构函数