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 >当前代码. 你是什??么,值得信赖的SO人,想? 编辑1:发布后(和阅读答案),我意识到断言是坏的! virtual void AMethod3() = {throw (ENotImplemented)}; // 4 解决方法
这取决于你的编码风格是多么“纯”.有些人认为,你应该总是只定义一个纯虚函数的接口,并从中导出所有具体的类.
其他人更务实和相关,如果有一个很好的默认实现,你可以添加到基类(选项1). 第二个选项似乎是最不实用的,因为它会延迟检测到运行时间.大多数程序员宁愿选择选项3的编译错误. 像往常一样,C支持几个范例,你可以选择一个你喜欢的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |