类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。类型兼容规则所指的替代包括以下情况:
    1.子类对象可以当作父类对象使用
    2.子类对象可以直接赋值给父类对象
    3.子类对象可以直接初始化父类对象
    4.父类指针可以直接指向子类对象
    5.父类引用可以直接引用子类对象
    在替代之后,派生类对象就可以作为基类的对象使用,但是只能使用从基类继承的成员。
    类型兼容规则是多态性的重要基础之一。
    总结:子类就是特殊的父类 (base *p = &child;)

    1. #include<iostream>
    2. using namespace std;
    3. /*
    4. 子类对象可以当作父类对象使用
    5. 子类对象可以直接赋值给父类对象
    6. 子类对象可以直接初始化父类对象
    7. 父类指针可以直接指向子类对象
    8. 父类引用可以直接引用子类对象
    9. */
    10. //子类就是特殊的父类
    11. class Parent
    12. {
    13. protected:
    14. const char* name;
    15. public:
    16. Parent()
    17. {
    18. name = "Parent";
    19. }
    20. void print()
    21. {
    22. cout<<"Name: "<<name<<endl;
    23. }
    24. };
    25. class Child : public Parent
    26. {
    27. protected:
    28. int i;
    29. public:
    30. Child(int i)
    31. {
    32. this->name = "Child";
    33. this->i = i;
    34. }
    35. };
    36. int main()
    37. {
    38. Child child(1000);
    39. //分别定义父类对象 父类指针 父类引用 child
    40. Parent parent = child;
    41. Parent* pp = &child;
    42. Parent& rp = child;
    43. parent.print();
    44. pp->print();
    45. rp.print();
    46. system("pause");
    47. return 0;
    48. }

    网址:链接