1:类型转换规则
    (1):一个公有派生类对象在使用上可以被当做基类的对象,反之则禁止。具体体现在:
    a:派生类对象可以隐含转换为基类对象。
    b:派生类的对象可以初始化基类的引用。
    c:派生类的指针可以隐含转换为基类的指针。
    (2)通过基类对象名,指针只能使用从基类继承的成员

    2:虚函数
    (1):虚函数是用virtual关键字说明的函数。
    (2):虚函数是实现运行时多态性基础
    (3):C++中的虚函数是动态绑定的函数
    (4):虚函数必须是静态非成员函数,虚函数经过派生之后,就可以实现运行过程中的多态。

    1. #include<iostream>
    2. using namespace std;
    3. class Person
    4. {
    5. public:
    6. void point()
    7. //virtual void point()
    8. {
    9. cout<<"Person"<<endl;
    10. }
    11. };
    12. class son1:public Person
    13. {
    14. public:
    15. void point()
    16. {
    17. cout<<"son1"<<endl;
    18. }
    19. };
    20. class son2:public son1
    21. {
    22. public:
    23. void point()
    24. {
    25. cout<<"son2"<<endl;
    26. }
    27. };
    28. void show(Person *p)
    29. {
    30. p->point();
    31. }
    32. int main()
    33. {
    34. Person p1;
    35. son1 p2;
    36. son2 p3;
    37. show(&p1);
    38. show(&p2);
    39. show(&p3);
    40. return 0;
    41. }

    这段代码在基类为加虚函数时结果为 :三个Person
    二加上virtual 这个关键字后:结果为:Person
    son1
    son2
    这个关键字虚基类必须加 派生类加不加不影响。

    3多态性
    多态性是指不同类的对象对同一消息的不同响应。
    image.png
    image.png
    4动态绑定
    (1):在编译时,我们不能预知p指向Student还是指向Perfessor。
    (2)在运行时,通过判断p指向的特定对象是什么,从而决定调用那个版本的print()函数。
    image.png
    要点:
    1:具有类的继承关系图,这个继承关系中每个类都可以调试用一个虚函数;
    2:基础类的指针指向子类对象;
    3:通过基础类的指针调用虚函数。
    image.png

    5:虚析构函数
    image.png
    结果为:
    image.png

    造成这样的主要原因时 红色字体哪里
    若将红色字体哪里改为 Base b;
    则不需要虚析构函数就会有这个答案image.png