在类名后使用 MSVCC 扩展关键字"abstract"是一种好的做法吗?

Is using the MSVCC extension keyword "abstract" after a class name a good practice?

本文关键字:一种 MSVCC abstract 关键字 扩展      更新时间:2023-10-16

考虑以下示例:

class CBase abstract
{
protected:
    CBase() { }
};

我可以去掉受保护的构造函数或"抽象"关键字。这个关键字使用起来很直观,但据我所知,其他编译器(尤其是Gcc)不支持它。

我还想知道使用某种宏为g++编译准备这段代码是否足够简单。如果我想在MS Windows以外的系统上编译代码,我想尽量减少代码更改。

定义为空的纯虚拟析构函数,即

class CBase {
public:
  virtual ~CBase() = 0;
}
inline CBase::~CBase() {}

任何不太好的C++编译器都支持这一点,并且标准允许。

宏是微不足道的:#define abstract。关键字不添加功能。

相关文章: