栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++核心编程(二十四)多态的分类,区别,和使用条件,使用方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++核心编程(二十四)多态的分类,区别,和使用条件,使用方法

(1)多态的分类
多态分为两种:
1)静态多态:函数重载和运算符重载属于静态多态,复用函数名
2)动态多态:派生类和虚函数实现运行时多态
(2)静态多态和动态多态的区别:
1)静态多态的函数地中早绑定,编译阶段确定函数地址
2)动态多态的函数地址晚绑定,运行阶段确定函数地址

(2)父类对象的指针(或者引用)=子类对象的指针(或子类对象)//允许这样使用

(3)动态多态的满足条件:
1)继承关系
2)子类重写父类的虚函数

(3)动态多态的使用
1)用父类的指针(或引用)=子类的指针(或子类对象)

#include
using namespace std;
class animal
{
public:
    void print1();
    virtual void print2();
};
class cat:public animal
{
public:
    void print1();
    void print2();//重写虚函数的时候virtual子类中可以写可以不写,这里没写
};
class dog:public animal
{
public:
    void print1();
    virtual void print2();//重写虚函数的时候virtual子类中可以写可以不写,这里写了
};
void animal::print1()
{
    cout<<"this is animal_1"<
    cout<<"this is animal_2"<
    cout<<"this is cat_1"<
    cout<<"this is cat_2"<
    cout<<"this is dog_1"<
    cout<<"this is dog_2"<
    obj->print1();
}


void later_bind(animal &obj)//等价于animal &obj=cat_obj;//地址晚绑定,在程序运行的时候再确定函数的地址
{
    obj.print2();
}

void test()
{
    cat cat_obj;
    early_bind(&cat_obj);
    later_bind(cat_obj);
}
int main()
{
    test();

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号