6

このコードが実際に正しいと見なされていることに驚きました (gcc 4.2.1):

class A {
public:
  const int i;
};
class B: public A {
public:
  //B() {}
};

一部の属性を初期化しないようにすることができます。A をインスタンス化しようとすると、コンパイラは文句を言いますが (もちろん同意します)、警告やエラーなしで B をインスタンス化させてください!

さらに悪いことに、コンパイラには一貫性がありません。B の空の ctor のコメントを外すと、B をインスタンス化するときにコンパイラが文句を言います。それとも私はどこかで間違いを犯しましたか?

4

1 に答える 1

3

これは確かにコンパイラのバグであり、ここで報告されています。

于 2013-01-28T15:25:16.290 に答える