考虑以下示例:
class CBase abstract
{
protected:
CBase() { }
};
我可以去掉受保护的构造函数或"抽象"关键字。这个关键字使用起来很直观,但据我所知,其他编译器(尤其是Gcc)不支持它。
我还想知道使用某种宏为g++编译准备这段代码是否足够简单。如果我想在MS Windows以外的系统上编译代码,我想尽量减少代码更改。
定义为空的纯虚拟析构函数,即
class CBase {
public:
virtual ~CBase() = 0;
}
inline CBase::~CBase() {}
任何不太好的C++编译器都支持这一点,并且标准允许。
宏是微不足道的:#define abstract
。关键字不添加功能。