找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 文档 工具 设计
查看: 186|回复: 0

C++语言虚函数的4条规则

[复制链接]

1万

主题

867

回帖

2万

积分

超级版主

教育辅助界扛把子

附加身份标识
精华
1
热心
2
听众
1
威望
57
贡献
11846
违规
0
书币
5552
注册时间
2020-4-8

论坛元老灌水之王

发表于 2021-11-23 11:50 | 显示全部楼层 |阅读模式
对于常规的基类函数来说,有下列使用规则:
1 、尽量使用非虚拟接口模式(NVI)让接口函数成为非虚拟的。
2 、尽量让虚函数成为私用的。
3 、只有当派生类需要调用基类对某个虚函数的实现时,才把虚函数声明为保护的。
4 、基类的析构函数应该要么为共有虚函数,要么为保护虚函数。

说明:1,2两条将虚公有接口的两个职责进行了很好的分解,遵守了单一职责原理。
  第4条说明了:如果要使用多态(指针调用),那么基类的析构函数一定要为虚函数;如果基类本身的设计不是处于多态考虑的话,那么就应该将析构函数设为保护类型。这样可防止出现使用指针的析构(基类无法被直接析构),只有派生类才能析构基类。
   非虚接口模式(NVI)的说明:基类对接口具有完全控制权,很方便在一个单一的、可复用的地方实施(enforce)接口的前条件。后条件、插入一些设备或做一些类似的事情。更好的是实现接口和实现分离;让基类在变化面前更稳定。条件检查可以仅在调式期有效,这更易于控制。如果非虚函数仅有唯一一行转发调用,编译器会做内联优化,没有效率问题。
Great works are not done by strength, but by persistence! 历尽艰辛的飞升者,成了围剿孙悟空的十万天兵之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@cdsy.xyz

QQ|Archiver|手机版|小黑屋|城东书院 ( 湘ICP备19021508号-1|湘公网安备 43102202000103号 )

GMT+8, 2024-4-20 00:32 , Processed in 0.042359 second(s), 26 queries .

Powered by Discuz! CDSY.XYZ

Copyright © 2019-2023, Tencent Cloud.

快速回复 返回顶部 返回列表