继承:
从已有类那里得到已有的特性
派生:
从已有类产生新类的过程
声明派生类的一般格式;
------------class 派生类名:继承方式 基类名
------------{....}
派生类构造函数参数初始化表格式:
------------基类构造函数名(参数表),数据成员1(参数表1), 数据成员2(参数表2),...
访问基类同名成员:
------------基类名::成员名
公有继承:基类的公有成员和保护成员在派生类中仍然保持为公有成员和保护成员的访问权限,基类的私有成员在派生类中不可访问。
私有继承:基类的公有成员和保护成员在派生类中成了私有成员,基类的私有成员在派生类中不可访问。
保护继承:基类的公有成员和保护成员在派生类中成了保护成员,基类的私有成员仍在派生类中不可访问。
基类的构造函数不能被派生类所继承。
构造函数的执行顺序:
先执行基类构造函数,后执行派生类构造函数。
派生类不能继承基类的析构函数。
析构函数执行顺序:
先执行派生类的析构函数,然后执行基类的析构函数。
多继承:
调用基类构造函数的执行顺序时按照声明派生类时基类出现的顺序进行调用。
虚基类:
语法格式:
class 派生类名: virtual 继承方式 基类名
虚基类不是在声明基类时声明,而是在声明派生类时,在继承方式前加关键字virtual加以声明。
如果在虚基类中定义有带参数的构造函数,并且参数没有默认值,而且没有定义无参构造函数,则在虚基类的直接派生或间接派生类的构造函数的初始化表都要对虚基类进行初始化:
在派生类的初始化表中加上:
虚基类构造函数名(参数表)
基类与派生类的赋值相容关系:
因为派生类中包含从基类继承的成员,所以可将派生类的对象值赋给基类对象:
1、派生类对象可以赋值给基类对象
2、基类的指针变量可指向派生类对象
3、可以用派生类对象初始化基类对象的引用
4、当函数参数时基类对象或基类对象的引用时,实参可以用派生类对象
从已有类那里得到已有的特性
派生:
从已有类产生新类的过程
声明派生类的一般格式;
------------class 派生类名:继承方式 基类名
------------{....}
派生类构造函数参数初始化表格式:
------------基类构造函数名(参数表),数据成员1(参数表1), 数据成员2(参数表2),...
访问基类同名成员:
------------基类名::成员名
公有继承:基类的公有成员和保护成员在派生类中仍然保持为公有成员和保护成员的访问权限,基类的私有成员在派生类中不可访问。
私有继承:基类的公有成员和保护成员在派生类中成了私有成员,基类的私有成员在派生类中不可访问。
保护继承:基类的公有成员和保护成员在派生类中成了保护成员,基类的私有成员仍在派生类中不可访问。
基类的构造函数不能被派生类所继承。
构造函数的执行顺序:
先执行基类构造函数,后执行派生类构造函数。
派生类不能继承基类的析构函数。
析构函数执行顺序:
先执行派生类的析构函数,然后执行基类的析构函数。
多继承:
调用基类构造函数的执行顺序时按照声明派生类时基类出现的顺序进行调用。
虚基类:
语法格式:
class 派生类名: virtual 继承方式 基类名
虚基类不是在声明基类时声明,而是在声明派生类时,在继承方式前加关键字virtual加以声明。
如果在虚基类中定义有带参数的构造函数,并且参数没有默认值,而且没有定义无参构造函数,则在虚基类的直接派生或间接派生类的构造函数的初始化表都要对虚基类进行初始化:
在派生类的初始化表中加上:
虚基类构造函数名(参数表)
基类与派生类的赋值相容关系:
因为派生类中包含从基类继承的成员,所以可将派生类的对象值赋给基类对象:
1、派生类对象可以赋值给基类对象
2、基类的指针变量可指向派生类对象
3、可以用派生类对象初始化基类对象的引用
4、当函数参数时基类对象或基类对象的引用时,实参可以用派生类对象