目录
多态简介
多态分为两类
1.静态多态:函数重载和运算符重载属于静态多态,赋予用函数名
2.动态多态:派生类和虚函数实现运行时多态
静态函数和动态多态区别
1.静态多态的函数地址早绑定-编译阶段确定函数地址
2.动态多态的函数地址晚绑定-运行阶段确定函数地址
动态多态
满足条件:
1.有继承关系
2.子类重写父类中的虚函数
使用条件:
父类指针或引用指向子类对象
#include<iostream>
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();
}
int main()
{
Cat cat;
Dog dog;
Dospeak(cat);
Dospeak(dog);
return 0;
}
纯虚函数和抽象类
由于在多态中通常父类中的虚函数的实现是毫无意义的,主要调用子类重写的内容
因此可以将虚函数改为纯虚函数
语法:virtual 返回值类型 函数名(参数列表)=0;
有纯虚函数的类也被称为抽象类
抽象类特点:
1.无法实例化对象
2.子类必须重写抽象类中的纯虚函数,否则属于抽象类
本文详细介绍了C++中的多态性,包括静态多态和动态多态的概念。静态多态通过函数重载和运算符重载实现,而动态多态则依赖于继承和虚函数,实现运行时的函数绑定。文中通过示例代码展示了如何利用父类指针调用子类的重写函数,解释了动态多态的工作原理。同时,还讨论了纯虚函数和抽象类的特性,指出抽象类不能实例化且其子类必须重写纯虚函数。
2244

被折叠的 条评论
为什么被折叠?



