标签: c++ inheritance attributes initialization const
我很惊讶这段代码实际上被认为是正确的(gcc 4.2.1):
class A { public: const int i; }; class B: public A { public: //B() {} };
这样我就可以让一些属性非初始化了。编译器在我尝试实例化A时抱怨(我当然同意),但是让我在没有任何警告或错误的情况下实例化B!
但更糟糕的是,编译器不一致。当我取消注释B的空ctor时,编译器会在我实例化B时抱怨...对我来说似乎是个错误,对与否?或者我在某处犯了错误?
答案 0 :(得分:3)
这确实是一个编译器错误,报告为here。