C++面向对象程序设计 多态

C++面向对象程序设计:多态详解
本文详细介绍了C++中的多态性,包括编译时多态和运行时多态,以及如何通过虚函数实现运行时多态。讨论了函数重载、覆盖、遮蔽的区别和作用,强调了虚函数在继承层次中的动态多态实现。同时,解释了抽象基类和运行期类型识别的重要概念,如纯虚函数和dynamic_cast、typeid的应用。

多态

多态性是不同的对象调用相同名称的函数,并可导致完全不同的行为的现象。“同一接口,多种方法”。

多态包括编译时多态(通过函数重载或运算符重载实现)和运行时多态(通过类的继承关系和虚函数实现)。

在基类中用关键字virtual修饰的成员函数称为虚成员函数,可以从基类继承。

如果虚函数在类声明之外定义,关键字virtual仅在函数声明时需要,不需再函数定义中使用该关键字。顶层函数不能为虚函数。

多态条件:

-必须存在一个继承体系结构。

-继承体系结构中的一些类必须具有同名的虚函数成员(当声明了基类的一个成员函数为虚函数后,即使该成员函数没有在派生类中被显式地声明为虚函数,但它在所有派生类中也将自动成为虚函数)。

-至少有一个基类类型的指针或基类类型的引用。这个指针或引用可用来对虚成员函数进行调用。(基类类型的指针可以指向任何基类对象或派生类对象)

C++使用vtable(虚成员函数表)来实现虚成员函数的运行期绑定。

构造函数不能使虚成员函数,析构函数可以使虚成员函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值