请考虑以下示例:
class CBase abstract
{
protected:
CBase() { }
};
我可以摆脱受保护的构造函数或“抽象”关键字。关键字直观易用,但据我所知,其他编译器(尤其是Gcc)不支持。
我还想知道是否使用某种宏来准备这个代码用于g ++编译很容易编写。如果我想在MS Windows以外的系统上编译代码,我想最小化代码更改。
答案 0 :(得分:2)
具有空定义的纯虚拟析构函数,即
class CBase {
public:
virtual ~CBase() = 0;
}
inline CBase::~CBase() {}
任何不太合适的C ++编译器都支持这一点,标准允许它。
答案 1 :(得分:1)
宏将是微不足道的:#define abstract
。该关键字不会添加功能。