学习:类和对象——多态
Posted zpchcbd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习:类和对象——多态相关的知识,希望对你有一定的参考价值。
多态的基本概念:
多态是C++面向对象三大特性之一
多态分为两类
1、静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 ,那么这个我们之前都有用到过
2、动态多态: 派生类和虚函数实现运行时多态
静态多态和动态多态区别:
1、静态多态的函数地址早绑定 - 编译阶段确定函数地址
2、动态多态的函数地址晚绑定 - 运行阶段确定函数地址
示例代码:
#include<iostream>
#include<string>
using namespace std;
class Animal {
public:
virtual void speak() { // 进行virtual修饰成员函数,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。
cout << "动物在说话" << endl;
}
};
class Dog :public Animal{
public:
void speak() {
cout << "小狗在说话" << endl;
}
};
class Cat :public Animal {
public:
void speak() {
cout << "小猫在说话" << endl;
}
};
void aaa(Animal & animal) {
animal.speak();
}
void test01() {
Cat c1;
aaa(c1);
Dog d1;
aaa(d1);
}
int main() {
test01();
system("pause");
return 0;
}
总结:
多态满足的条件:
1、有继承关系
2、子类重写父类中的虚函数
多态使用条件:
1、父类指针或引用指向子类对象
重写:函数返回值类型 函数名 参数列表 完全一致称为重写
以上是关于学习:类和对象——多态的主要内容,如果未能解决你的问题,请参考以下文章
Python基础- 类和对象(使用继承派生组合接口多态封装propertystaticmethodclassmethod反射slots上下文管理协议元类)