一、单继承方式
先看代码:
#include <iostream>
#include <string>
using namespace std;
class A{
public:
A()
{
cout << "A::A() ";
}
~A()
{
cout << "A::~A()" << endl;
}
};
class B :public A{
public:
B()
{
cout << "B::B() " << endl;
}
~B()
{
cout << "B::~B() ";
}
};
void func()
{
cout << "constructor: ";
B b;
cout << "destructor: ";
}
void main()
{
func();
system("pause");
}
输出:
单继承方式:
特性:继承了基类所有属性与行为,包括私有成员,但不允许派生类直接访问基类私有成员。
构造函数:
派生类构造函数名(形参表):基类构造函数名(形参表){…}
要点:
创建派生类对象时,程序首先创建基类对象,即基类对象应在进入派生类构造函数前被创建完成
派生类构造函数应通过成员初始化表将基类信息传递给基类构造函数
派生类构造函数应初始化派生类新增的数据成员
析构函数:
派生类对象过期时,程序将首先调用派生类析构函数,然后调用基类的
虚析构函数:
作用:和虚函数一样类似,在用基类指针释放派生类对象时候,为了能调用正确的析构函数。
注意:当一个类有虚函数功能,它经常作为一个基类使用,并且它的派生类经常使用new来分配,那么它最好也使用虚析构函数,因为这样才能保证在释放实例对象的时候调用正确的析构函数
无虚析构函数: