虚函数的访问权限

C++的访问控制机制只在编译时检查,运行时没有访问控制检查(C++编译器生成运行时机器代码时,没有考虑运行时的访问控制问题)。编辑器在编译时根据变量类型来判断何为private、public,Base的fun2()是public,所以顺利通过了编译。至于多态调用Derived的private函数fun2()是在运行时发生的,如上所述没有访问控制检查,所以产生了这种现象。

其实这也没有违背OOP对封装的设计要求。多态的特性使得基类Base的指针pBase也能指向派生类对象,此时pBase仍然是基类Base指针类型,按照Base的声明可以访问成员函数fun2();但由于fun2()是虚函数,所以调用实际指向类型(派生类)的具体实现。这个过程依然满足Base类的访问控制要求。

所以派生类的private函数是有可能被基类指针调用的,反之则不行。

 

 from WuJiaqi

 

转载于:https://www.cnblogs.com/zzsama/p/10799497.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值