使用MSVCC扩展关键字“抽象”后的类名是一个好习惯吗?

时间:2012-02-20 11:38:03

标签: c++ visual-c++

请考虑以下示例:

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

我可以摆脱受保护的构造函数或“抽象”关键字。关键字直观易用,但据我所知,其他编译器(尤其是Gcc)不支持。

我还想知道是否使用某种宏来准备这个代码用于g ++编译很容易编写。如果我想在MS Windows以外的系统上编译代码,我想最小化代码更改。

2 个答案:

答案 0 :(得分:2)

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

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

inline CBase::~CBase() {}

任何不太合适的C ++编译器都支持这一点,标准允许它。

答案 1 :(得分:1)

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

相关问题