多态概念三层含义
    继承是构成多态的基础
    虚函数数构成多态的关键
    函数重写是必备条件

    1. #include<iostream>
    2. using namespace std;
    3. class Animal
    4. {
    5. public:
    6. void show()
    7. {
    8. cout << "动物的show" << endl;
    9. }
    10. virtual void run()
    11. {
    12. cout << "动物的跑" << endl;
    13. }
    14. virtual void fun()
    15. {
    16. cout << "动物的作用" << endl;
    17. }
    18. };
    19. class Cat :public Animal
    20. {
    21. public:
    22. void show()
    23. {
    24. cout << "这是猫的show" << endl;
    25. }
    26. void run()
    27. {
    28. cout << "猫用猫步跑" << endl;
    29. }
    30. void fun()
    31. {
    32. cout << "抓老鼠" << endl;
    33. }
    34. };
    35. class Fish :public Animal
    36. {
    37. public:
    38. void run()
    39. {
    40. cout << "鱼在水中游" << endl;
    41. }
    42. void fun()
    43. {
    44. cout << "鱼的作用是被观赏" << endl;
    45. }
    46. };
    47. int main()
    48. {
    49. Cat cat;
    50. cat.show();
    51. cat.run();
    52. cat.fun();
    53. Animal animal;
    54. animal.show();
    55. animal.run();
    56. animal.fun();
    57. Animal *pa = &cat;
    58. pa->show();
    59. pa->run();
    60. pa->fun();
    61. Fish fish;
    62. Animal af = fish;
    63. af.show();
    64. af.run();
    65. af.fun();
    66. Animal & afh = fish;
    67. afh.show();
    68. afh.run();
    69. afh.fun();
    70. }

    VA({}7U~G93QUXHY~P{(}@Y.png
    多态好处可以类型通用,坏处失去子类个性
    多窗口切换
    信号与槽机制:
    当某个事件出现时,通过发送信号,可以将与之相关的槽函数激活,即执行槽函数代码。
    信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出的特征。在GUI编程中,当改变了一个部件时,总希望其他部件也能了解到该变化。
    信号
    信号是一种特殊类型的成员函数,他们被定义为当某个事件发生时就被发射。
    当对象内部发生某些事件时,他能发出信号。如果这个信号连接到槽,那么这个槽就被执行。
    可以将多个槽连接到同一信号,那么这些槽将按任意顺序一个接一个执行。
    声明一个信号要是用signals关键字,signals前不能使用public、private、protected等限定字符,只有定义该信号的类及其子类才可以发射该信号。
    信号只用声明,大部分情况下不需要自己定义实现。
    信号函数没有返回值,只能是void类型。
    信号和槽关联后,当槽所连接的信号被发射时,槽函数就被执行。