多态的理解、作用及其c++代码实例及其运行结果

大部分内容参考于程序员面试宝典


多态性可以简单理解为“一个接口,多种方法”。在程序运行的过程中才决定调用的函数。

比较形象的一个例子:

开电视,开窗户,开门,这里的“”就是多态(到底准备开什么的意思)。


多态性允许你将父对象设置成为和它的一个或更多的子对象相等的技术,即允许将子类类型的指针赋值给父类类型的指针。c++中的多态性是通过虚函数实现的。

虚函数就是允许被其子类重新定义的成员函数。


现在说下多态的作用:

我们知道封装可以隐藏实现细节,使得代码模块化,继承可以扩展已存在的代码模块。他们的目的都是为了代码重用。而多态的目的是为了接口重用

接口重用在多态中是能够通过父类指针来调用子类的方法,达到一个指针能够达到重复使用的目的(即接口重用)


c++代码

#include <iostream>

using namespace std;

class parent
{
public:
    virtual void f1(){cout<<"f1 from parent"<<endl;}//虚函数
    void f2(){cout<<"f2 from parent"<<endl;}
};

class son:public parent//继承
{
public:
    void f1(){cout<<"f1 from son"<<endl;}
    void f2(){cout<<"f2 from son"<<endl;}
};

int main()
{
    parent *p1=new parent();
    p1->f1();
    p1->f2();
    parent *p2=new son();//覆盖问题
    p2->f1();
    p2->f2();
    return 0;
}


运行结果


解析:前两个输出应该不难理解,这里说下第三个输出

parent类中的f1函数是虚函数,虚函数是被子类同名所覆盖的。而parent类中f2是一个普通函数,不会被子类同名覆盖。

p2是一个指针,指向对象,由于parent类里的f1函数被son类里的f1函数所覆盖,所以输出f1 from son



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值