我找到了一些我正在处理的代码,并且想知道最好的设计实现是什么。
如果基类将方法定义为虚拟方法,但也实现了空主体,因此不需要派生类实现主体,是否应该改为纯方法?
virtual void AMethod1() {} // 1
virtual void AMethod2() {assert(false);} // 2
virtual void AMethod3() = 0; // 3
- 当前代码。
- Idea1:提醒用户这个派生对象没有实现这个方法体。
- Idea2:强制派生类实现一个主体,无论是否为空。
您,可信赖的、了不起的 SO 人,怎么看?
Edit1:发布(并阅读答案)后,我意识到断言很糟糕!
virtual void AMethod3() = {throw (ENotImplemented)}; // 4