我很惊讶这段代码实际上被认为是正确的(gcc 4.2.1):
class A {
public:
const int i;
};
class B: public A {
public:
//B() {}
};
这样我就可以让一些属性未初始化。当我尝试实例化 A 时编译器会抱怨(我当然同意),但让我实例化 B 而没有任何警告或错误!
但更糟糕的是,编译器不一致。当我取消注释 B 的空 ctor 时,编译器会在我实例化 B 时抱怨......对我来说似乎是一个错误,对吗?还是我在某个地方犯了错误?