加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 什么时候应该是纯粹的方法?

发布时间:2020-12-16 03:20:31 所属栏目:百科 来源:网络整理
导读:我已经找到了我正在开发的一些代码,并且想知道最好的设计实现是什么. 如果一个基类定义一个方法为虚拟的,但是也实现一个空的体,因此不需要派生类来实现一个主体,如果不是纯粹的呢? virtual void AMethod1() {} // 1virtual void AMethod2() {assert(false);
我已经找到了我正在开发的一些代码,并且想知道最好的设计实现是什么.

如果一个基类定义一个方法为虚拟的,但是也实现一个空的体,因此不需要派生类来实现一个主体,如果不是纯粹的呢?

virtual void AMethod1() {}                 // 1
virtual void AMethod2() {assert(false);}   // 2
virtual void AMethod3() = 0;               // 3

>当前代码.
> Idea1:提醒用户该派生对象尚未实现此方法体.
Idea2:派生类实现一个body,不空.

你是什??么,值得信赖的SO人,想?

编辑1:发布后(和阅读答案),我意识到断言是坏的!

virtual void AMethod3() = {throw (ENotImplemented)};               // 4

解决方法

这取决于你的编码风格是多么“纯”.有些人认为,你应该总是只定义一个纯虚函数的接口,并从中导出所有具体的类.

其他人更务实和相关,如果有一个很好的默认实现,你可以添加到基类(选项1).

第二个选项似乎是最不实用的,因为它会延迟检测到运行时间.大多数程序员宁愿选择选项3的编译错误.

像往常一样,C支持几个范例,你可以选择一个你喜欢的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读