参数初始化表(实现构造函数使用,即有函数体时):
Persion
(int a = 18){ age = a; } //
不含参数初始化列表
Persion
(int a = 18):age(a){ } //
含参数初始化列表
继承(可以继承多个类,用逗号隔开,继承后,先执行父类构造函数,再执行本类构造函数):
class
Boy : public Persion
Boy
(int a = 18):Persion(a),age(a){ };
调用父类方法(直接使用父类的名称,相当于java中的super):
Persion
::display();
子类可以访问父类的public、protect方法及变量,不能访问private的方法和变量
虚函数可以重载,重载的函数依然是虚函数,可以不用virtual:
virtual
void display();
1. 函数的参数是基类对象,则不能实现多态性;
2. 虚函数可以不重载,不重载的话则集成基类的虚函数指针;
3. 非虚函数也可以重载,但不能实现多态性;
4. 构造函数不能重载,友元函数不能继承
基类中的公有函数在子类中也是公有的,即使在子类中声明为私有
基类的析构函数声明为虚函数,则在释放掉子类的内存时,可以正常释放其基类的内存
纯虚函数必须在子类中重载:
virtual
void display() = 0;