gpt4 book ai didi

c++ - 虚方法什么时候应该是纯的?

转载 作者:可可西里 更新时间:2023-11-01 16:26:21 26 4
gpt4 key购买 nike

我找到了一些我正在处理的代码,想知道最好的设计实现是什么。

如果一个基类将一个方法定义为虚拟的,但也实现了一个空主体,因此不需要派生类实现一个主体,是否应该将其改为纯方法?

virtual void AMethod1() {}                 // 1
virtual void AMethod2() {assert(false);} // 2
virtual void AMethod3() = 0; // 3
  1. 当前代码。
  2. 想法 1:提醒用户此派生对象尚未实现此方法体。
  3. 想法 2:强制派生类实现一个主体,无论是否为空。

您,那些值得信赖的 SO 人,怎么看?


Edit1:发帖(和阅读答案)后,我意识到断言是错误的!

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

最佳答案

这在一定程度上取决于您的编码风格有多“纯粹”。有些人认为您应该始终仅使用纯虚函数定义接口(interface),并从中派生所有具体类。

其他人则更务实,他们认为如果有一个好的默认实现,您可以将其添加到基类(选项 1)。

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

像往常一样,C++ 支持多种范式,您可以选择您喜欢的范式。

关于c++ - 虚方法什么时候应该是纯的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com