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;
程序执行没有任何变化。