多态概念三层含义
继承是构成多态的基础
虚函数数构成多态的关键
函数重写是必备条件
#include<iostream>
using namespace std;
class Animal
{
public:
void show()
{
cout << "动物的show" << endl;
}
virtual void run()
{
cout << "动物的跑" << endl;
}
virtual void fun()
{
cout << "动物的作用" << endl;
}
};
class Cat :public Animal
{
public:
void show()
{
cout << "这是猫的show" << endl;
}
void run()
{
cout << "猫用猫步跑" << endl;
}
void fun()
{
cout << "抓老鼠" << endl;
}
};
class Fish :public Animal
{
public:
void run()
{
cout << "鱼在水中游" << endl;
}
void fun()
{
cout << "鱼的作用是被观赏" << endl;
}
};
int main()
{
Cat cat;
cat.show();
cat.run();
cat.fun();
Animal animal;
animal.show();
animal.run();
animal.fun();
Animal *pa = &cat;
pa->show();
pa->run();
pa->fun();
Fish fish;
Animal af = fish;
af.show();
af.run();
af.fun();
Animal & afh = fish;
afh.show();
afh.run();
afh.fun();
}
多态好处可以类型通用,坏处失去子类个性
多窗口切换
信号与槽机制:
当某个事件出现时,通过发送信号,可以将与之相关的槽函数激活,即执行槽函数代码。
信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出的特征。在GUI编程中,当改变了一个部件时,总希望其他部件也能了解到该变化。
信号
信号是一种特殊类型的成员函数,他们被定义为当某个事件发生时就被发射。
当对象内部发生某些事件时,他能发出信号。如果这个信号连接到槽,那么这个槽就被执行。
可以将多个槽连接到同一信号,那么这些槽将按任意顺序一个接一个执行。
声明一个信号要是用signals关键字,signals前不能使用public、private、protected等限定字符,只有定义该信号的类及其子类才可以发射该信号。
信号只用声明,大部分情况下不需要自己定义实现。
信号函数没有返回值,只能是void类型。
信号和槽关联后,当槽所连接的信号被发射时,槽函数就被执行。