• C++ 三大属性之多态


    一、什么是多态

    多态性就是不同对象收到相同消息,产生不同的行为。可以用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。

    二、多态的种类

    静态联编支持的多态性称为编译时多态性(静态多态性)。在C++中,编译时多态性是通过函数重载和模板实现的。利用函数重载机制,在调用同名函数时,编译系统会根据实参的具体情况确定索要调用的是哪个函数。

    动态联编所支持的多态性称为运行时多态(动态多态)。在C++中,运行时多态性是通过虚函数来实现的。

    编译时和运行时具体过程可参考:https://www.cnblogs.com/AntonioSu/p/12196525.html

    三、什么是虚函数

    主要是为了实现动态多态而设计。用virtual关键字申明的函数叫做虚函数。

    虚函数的重写:派生类中有一个跟基类的完全相同的虚函数,我们就称子类的虚函数重写了基类的虚函数。“完全相同”是指:函数名、参数、返回值都相同。

    四、代码示例

    动态多态的实现

    #include <iostream>
    using namespace std;
    class Person
    {
    public:
        virtual void show() { cout << "I am person" << endl; }
    };
    class Student : public Person
    {
    public:
        virtual void show() { cout << "I am student" << endl; }
    };
    class Teacher : public Person
    {
    public:
        virtual void show() { cout << "I am teacher" << endl; }
    };
    class Bachelor : public Student
    {
        virtual void show() { cout << "I am bachelor" << endl; }
    };
    int main(){
        Person  person;
        Student student;
        Teacher teacher;
        Bachelor bachelor;
    
        Person *one = &person;//指向person
        one->show();    // I am person 。多态,person.show()被调用
        one = &student;        //基类指针one指向派生类对象student
        one->show();  //I am student 。多态,student.show()被调用
        one = &teacher;       //基类指针one指向派生类对象teacher
        one->show();  //I am teacher 。多态,teacher.show()被调用
        one = &bachelor;       //基类指针one指向派生类对象bachelor
        one->show();  //I am bachelor 。多态,bachelor.show()被调用
        return 0;
    }
  • 相关阅读:
    基于bootsplash的嵌入式linux启动画面定制
    Android程式编写及调试新手入门3
    linux2.6 内核的 initrd
    exec与xargs区别 Leone
    jquery扩展方法:jquery.fn.extend与jquery.extend Leone
    MySQL查询in操作 查询结果按in集合顺序显示 Leone
    CentOS Linux Vsftp服务器配置 Leone
    linux[批量复制并重命名]和[批量复制文件到多个文件夹] Leone
    学会了这些保你5年内买车买房 Leone
    国外网赚项目的分类 Leone
  • 原文地址:https://www.cnblogs.com/AntonioSu/p/12196623.html
Copyright © 2020-2023  润新知