C++多态(动态)的实现原理

本文介绍了C++中的多态概念,强调接口的重用性,并深入探讨了动态多态的实现原理,主要依赖于虚函数。通过虚函数表,子类在继承基类时可以覆盖并调用重写的方法,实现不同对象调用相同接口产生不同结果的效果。通过实例分析了指针转换后如何调用相应子类的虚函数。
摘要由CSDN通过智能技术生成

一、什么是多态

什么是多态?同一个事物多种表现形式,强调接口的重用性。看下面:

class A {
public:
	int n;
	virtual void  show() {
		cout << "A show!" << endl;
	}
    virtual void  show2() {
		cout << "A2 show!" << endl;
	}
};
class B :public A
{
public:
	void show() {
		cout << " B show!" << endl;
	}
};
class C :public A
{
public:
	void show() {
		cout << " C show!" << endl;
	}
};
int main()
{
	A *a=new A();
	B b;
	C c;
	a = &b;
	a->show();
	a = &c;
	a->show();
    return 0;
}

运行结果:相同的代码a->show(),结果却是不一样的!这就是多态(动态)。

在这里插入图片描述

二、实现原理

动态多态是利用虚函数实现的。在类中如果出现virtual关键字,那么这个类的大小将会多出一个指针的大小(32位4字节,64位8字节),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值