继承,构造函数

继承方式-private, protected, public,默认是私有继承
继承形式-class b:public A{...};
基类的私有成员在派生类是隐藏的
私有继承时,基类的公有成员和保护成员改变为私有成员
公有继承时,公有成员和保护成员仍是如此
保护继承时,公有成员变为保护成员

在没有继承的情况下,protected跟private相同。在派生类的时候才出现分化。
基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员。
派生类对象如果要访问基类protected成员只有通过派生类对象,派生类不能访问基类对象的protected成员。
也就是说private成员是不能被继承的,只有public,protected的成员才可以被继承。
 
先调用基类的构造函数,然后派生类的构造函数
先调用派生类的析构函数,在调用基类的构造函数

多重继承中标识符冲突的问题,使用作用域运算符,使用同名覆盖原则,使用虚函数
虚基类是为了解决同名成员之间而产生的二义性问题,具体做法是将公共基类声明为虚基类
class base1:virtual public base{};
class base2:virtual public base{};
class derived:public base1, public base2{};
// base 为虚基类,虚基类的成员在进一步派生过程中,和派生类一起维护同一个内存拷贝

猜你喜欢

转载自blog.csdn.net/shidamowang/article/details/80084770