首页 > 其他 > 详细

虚函数的访问权限

时间:2019-05-01 12:34:18      阅读:164      评论:0      收藏:0      [点我收藏+]

技术分享图片

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

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