如果一个基类定义一个方法为虚拟的,但是也实现一个空的体,因此不需要派生类来实现一个主体,如果不是纯粹的呢?
virtual voID AMethod1() {} // 1virtual voID AMethod2() {assert(false);} // 2virtual voID AMethod3() = 0; // 3
>当前代码.
> IDea1:提醒用户该派生对象尚未实现此方法体.
IDea2:派生类实现一个body,不空.
你是什么,值得信赖的SO人,想?
编辑1:发布后(和阅读答案),我意识到断言是坏的!
virtual voID AMethod3() = {throw (ENotImplemented)}; // 4解决方法 这取决于你的编码风格是多么“纯”.有些人认为,你应该总是只定义一个纯虚函数的接口,并从中导出所有具体的类.
其他人更务实和相关,如果有一个很好的默认实现,你可以添加到基类(选项1).
第二个选项似乎是最不实用的,因为它会延迟检测到运行时间.大多数程序员宁愿选择选项3的编译错误.
像往常一样,C支持几个范例,你可以选择一个你喜欢的.
总结以上是内存溢出为你收集整理的c – 什么时候应该是纯粹的方法?全部内容,希望文章能够帮你解决c – 什么时候应该是纯粹的方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)