Derived
クラスコンストラクターは、最初の引数としてii
を持ちますが、Base
に渡された引数は、目的に応じてi
に等しくなっています。コンパイラが派生クラスのコンストラクタの定義に不満を持っていないのはなぜですか?
class Base
{
protected:
int i;
public:
Base(int i) : i(i) {}
};
class Derived : public Base
{
private:
int k;
public:
Derived(int ii, int k) : Base(i), k(k) {} // Why not C2065: 'i' undeclared identifier
};
int main()
{
}
確かに、コンパイラは、コードがunitialised変数を使用している知るためにここに十分な情報を持っています。これは、開発チームが貴重な工数を使ってこれ以外のものを開発することにしたためです(VS2010のC++ 11サポートのように)。 –