C++继承中的类型兼容原则
类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。
类型兼容规则中所指的替代包括以下情况:
(1)父类指针可以直接指向子类对象
(2)父类引用可以直接引用子类对象
(3)子类对象可以直接初始化父类对象
(4)子类对象可以当作父类对象使用
(5)子类对象可以直接赋值给父类对象
#include <iostream> using namespace std; class Parent { private: char sex; public: Parent(char s):sex(s){} void printP() { cout<<"parent...."<<endl; } }; class Child:public Parent { private: int age; public: Child(int a, char s):age(a),Parent(s){} void printC() { cout<<"child..."<<endl; } }; int main() { Child c1(5, 'm'); Parent *p1 = &c1; //父类指针指向子类对象 p1->printP(); //只能调用父类方法 Parent &p2 = c1; //父类对象引用子类对象 p2.printP(); //只能调用父类方法 Child c2(5, 'm'); Parent p3(c2); //用子类对象初始化父类对象 p3.printP(); Parent p4 = c2; //用子类对象给父类对象赋值 p4.printP(); return 0; }
执行结果:
parent.... parent.... parent.... parent....