C++11 標準の 7.3.3.p1 と p3 の両方の段落は、コンストラクターを指定するusing 宣言を参照しています。なぜこれが必要なのですか?以下のコードは、基本クラスA
のコンストラクターが派生クラスB
で期待どおりに表示されることを示しています。
class A
{
int i;
public:
A() : i(0) {}
A(int i) : i(i) {}
};
class B : public A
{
public:
// using A::A;
A f1() { return A(); }
A f2() { return A(1); }
};
int main()
{
B b;
A a1 = b.f1();
A a2 = b.f2();
}
上記をコメントアウトしてusing A::A;
も、プログラムの実行に変化はありません。