1. 基础概念
构造函数:在C++对象创建的时候,自动调用,一般用于对象的初始化。没有返回类型,函数名与类名一致。
析构函数:用于在程序结束时自动销毁对象,也可显式调用销毁。没有返回类型,没有参数,函数名为 ~ + 类名
C++中,构造函数和析构函数在每一个类中都有缺省实现,所以不定义构造函数和析构函数,也是可以正常运行的。
2. 构造函数的重载:
构造函数可以分为带参数和不带参数两种(同名不同参数,即为重载)。简单示例入以下:
#include <iostream>
using namespace std;
class base{
private:
int a;
public:
base(){ // 不带参数的构造函数
a = 0;
cout <<"call Constructor of base" <<endl;
}
base(int tem): a(tem) { // 成员初始化列表进行初始化,也可将赋值写在函数里面
cout <<"call Constructor with parameter of base" <<endl;
}
~base(){ // 析构函数
cout <<"call Destructor of base" <<endl;
}
};
int main()
{
base c1;
base c2(2);
return 0;
}
3. 子类的构造函数和析构函数调用顺序
我们知道类有继承,那么子类在创建以及销毁的时候调用的构造函数和析构函数的顺序是怎样的呢?为了得到结论,做了如下测试:
#include <iostream>
using namespace std;
class base{ // 基类
private:
int a;
public:
base(){ // 基类无参数构造函数
cout <<"call Constructor of base" <<endl;
}
base(int tem): a(tem) { // 基类带参数构造函数
cout <<"call Constructor with parameter of base" <<endl