1.public继承的赋值兼容规则
class base{};
class derived:public base{};
base b;
derived d;
1)派生类的对象可以赋值给基类对象
b=d;
2)派生类对象可以初始化基类引用
base &br=d;
3)派生类对象的地址可以赋值给基类指针
base *pd=&d;
注意:如果派生方式是private或者protected,则上述三条不可行
2.直接基类与间接基类
–在声明派生类时,只需要列出他的直接基类
–派生类沿着类的层次自动向上继承他的间接基类
–派生类的成员包括
派生类自己定义的成员
直接基类中的所有成员
所有间接基类的全部成员
#include<iostream>
using namespace std;
class base
{
public:
int n;
base(int i):n(i){
cout<<"base"<<n<<"construted"<<endl;
}
~base(){
cout<<"base"<<n<<"destructed"<<endl;
}
};
class derived:public base
{
public:
derived(int i):base(i){cout<<"derived constructed"<<end;}
~derived(){cout<<"derived destructed"<<end;}
};
class morederived:public derived
{
public:
morederived():derived(4){
cout<<"more derived constructed"<<endl;
}
~morederived(){
cout<<"more derived destructed"<<endl;
}
};
int main()
{
morederived obj;
reurn 0;
}
//输出结果
/*
base 4 constructed
derived constructed
more derived consturcted
more derived destructed
derived destructed
base 4 desturcted*/