学习:类和对象——多态

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上下文管理协议元类)

面对对象多态的异常

Python 面向对象(创建类和对象,面向对象的三大特性是指:封装继承和多态,多态性)