动态多态 virtual

//多态
#include
using namespace std;

class Animal //动物类
{
public:
//加了虚函数就时猫在说话了现在就是晚绑定
virtual void speak()
{
cout << “动物在说话” << endl;
}

};

//猫类
class Cat :public Animal
{
public:
void speak()
{
cout << “猫在说话” << endl;
}
};
//执行说话的函数
//地址早绑定 在编译阶段确定函数地址
//如果想执行想让猫说话,那么这个函数地址就不能提前绑定,需要在运行
//阶段在绑定

//狗类
class dog :public Animal
{
public:
void speak()
{
cout << “小狗在说话” << endl;
}
};
void dospeak(Animal &animal)
{
animal.speak();
}

void test01()
{
Cat cat;
dospeak(cat);

dog d;
dospeak(d);

}

int main()
{
test01();
system(“pause”);
return 0;
}

//动态多态满足条件
//1.有继承关系
//2.子类要重写父类的虚函数
//重写:函数返回值类型 函数名 参数列表 完全相同

//动态多态使用
//父类的指针或引用 执行子类对象 下面这个
//void dospeak(Animal &animal)
//{
// animal.speak(cat);
//}

猜你喜欢

转载自blog.csdn.net/ADADQDQQ/article/details/108286396