c++ 多态的实现

多态是指同一名字的函数调用时根据对象的不同使用不同的实现,程序在执行中寻找相应的函数地址进行执行,也叫动态绑定。父类调用子类函数时,父类指针有多种形态。

多态的实现是靠指针和虚函数,本质是虚表和虚指针;

在父类的函数声明为虚函数后,其派生类的该函数都是虚函数,不需要再显示声明了;

在创建类的对象时,会为每个对象提供一个虚表指针,指向该对象所属类的虚表;

虚表的创建和虚表指针的初始化在类的对象实例化时调用构造函数时进行,因此实例化基类对象时,创建的虚表只能是基类的,子类对象创建时才能创建自身的虚表和初始化自身的虚表指针。

派生类的虚表继承基类的虚表,两者地址排列顺序相同,同时也可以添加自己的虚函数的地址。

纯虚函数,将虚函数只声明,不定义,由派生类来进行定义,属于接口,是个函数声明,同时纯虚函数必须在子类里实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值