一、构造函数
每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫构造函数。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。
对于构造函数有以下几点需要注意:
构造函数与类同名,并且没有返回值。
构造函数和其他成员函数一样,都能够被重载
构造函数不能够被声明成const,当我们创建一个const对象,直到构造函数初始化完成,对象才能获得真正的常量属性。因此构造函数可以创建对象过程中对其写值。
二、析构函数
析构函数是一类特殊的成员函数,它会在每次删除所建行对象执行。
析构函数具有如下特点:
析构函数也和类名相同,不过需要在前面加上~便于与构造函数区分。
析构函数没有返回值,并且不能够被重载,这一点和构造函数不同
当对象被撤销时析构函数自动调用,与构造函数不同的是,析构函数可以被显示调用,已释放对象中动态申请的内存。
无法声明为 const或 static。 但是,可以为声明为 const、 或 static 的对象的析构调用它们。
二者的调用顺序
class A
{
public:
A() { cout << "A的构造函数" << endl; }
~A() { cout << "A的析构函数" << endl; }
};
class B
{
public:
B() { cout << "B的构造函数" << endl; }
~B() { cout << "B的析构函数" << endl; }
};
class C :public B {
public:
C() { cout << "C的构造函数" << endl; }
~C() { cout << "C的析构函数" << endl; }
};
int main()
{
A a;
B b;
C c;
return 0;
}
输出结果如下:
可以看出以下两条原则:
先构造的对象后被析构;
先调用父类的构造函数,再调用子类的构造函数。