基类成员访问属性 继承方式 派生类成员访问属性
---------------------------------------
public成员 public public
protected成员 protected
private成员 无法访问
-----------------------------------------
public protected protected
protected protected
private 无法访问
-----------------------------------------
public private private
protected private
private 无法访问
-----------------------------------------
隐藏:
父子关系->成员函数、数据成员同名->隐藏父类成员
通过父类::成员可以访问隐藏的成员
覆盖:
父子关系->同名虚函数->覆盖父类的虚函数
抽象类:含有纯虚函数的类叫抽象类,抽象类不能实例化
接口类:仅含有纯虚函数的类叫接口类,没有数据成员,成员函数都是纯虚函数
RTTI 运行时类型识别
void dosomething(flyable *obj)
{
obj->takeoff();
cout<< typeid(*obj).name()<<endl;
if(typeid(*obj)==typeid(Bind))
{
Bird *bird = dynamic_cast<Bird *>(obj);
bird->foraging();
}
obj->land();
}
dynamic_cast 必须是指针或引用,且类中必须要有虚函数