首页 > 其他 > 详细

多态及实现方法

时间:2020-03-13 21:31:19      阅读:89      评论:0      收藏:0      [点我收藏+]

多态介绍

面向对象的核心思想是多态性,其含义是“多种形式”
概念:在子类覆盖了父类函数的情况下,用父类的指针(或引用)调用子类对象,或者通过父类指针调用覆盖函数的时候(动态绑定),实际上调用的是子类的覆盖版本,这种现象叫做多态
注意事项:
只有用父类的指针(或引用)调用子类对象多态才会产生,非指针/引用不会产生多态
且只有用父类的指针(或引用)调用虚函数才会产生多态,调用非虚函数不会产生多态效果
运行时解析:
当我们使用基类的引用或指针调用基类中定义的一个虚函数时,我们并不知道该函数真正作用的对象是什么类型,因为它可能是一个基类的对象也可能是一个派生类的对象
如果该函数是虚函数,则直到运行时才会决定到底执行哪个版本。非虚函数的调用在编译时进行绑定的,类似的,通过对象进行的函数(虚函数或非虚函数)调用也在编译时绑定

 

多态条件

1、父子类之间有覆盖关系

2、基类必须通过引用或指针指向子类,然后再调用虚函数,此时就可以实现多态

 

多态的实现方法

1.必须有继承关系

2.父子类之间有重写(覆盖)

3.父类的指针指向于子类,或父类的引用指向于子类

4.通过父类的指针或引用调用成员方法,会实现不同的效果

 

代码演示

class A
{
public:
//虚函数
virtual void show()const { cout << "A1 "; }
void show2()const { cout << "A2\n"; }
};

class B :public A
{
public:
//虚函数
void show()const { cout << "B1 "; }
void show2()const { cout << "B2\n"; }
};

void printfShow(A const& data)
{
data.show();
data.show2();
}

int main()
{
A a;
B b;
printfShow(a);
printfShow(b);
return 0;
}

多态及实现方法

原文:https://www.cnblogs.com/swpu-zw/p/12488938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!