class A
{
A(int a);
};
class B : public A
{
using A::A; // Shorthand for B(int b) : A(b) {}?
};
int main()
{
B b(3);
return 0;
}
是否有某种方法可以实现上述程序所寻求的目标(使B具有一个具有相同参数的构造函数作为基类')?这是正确的语法吗?
如果是这样,它是C ++ 11/14的功能,还是可以在C ++ 03中完成?
答案 0 :(得分:6)
是否有某种方法可以实现上述程序所寻求的目标(使B具有一个具有相同参数的构造函数作为基类')?
是的,有。使用继承构造函数:
using A::A;
这是正确的语法吗?
是
如果是这样,它是C ++ 11/14的功能,还是可以在C ++ 03中完成?
此功能是在C ++ 11中引入的。它在C ++ 03中无效。
有关详细信息,请参阅此using declaration参考的相关部分。
答案 1 :(得分:3)
是的,就像那样(一旦我清理了你无关的错误):
struct A
{
A(int a) {}
};
struct B : A
{
using A::A; // Shorthand for B(int b) : A(b) {}?
};
int main()
{
B b(3);
}
这些被称为继承构造函数,并且是自C ++ 11以来的新版本。