我有这个示例代码:
#include <iostream>
class A
{
public:
A()
{
std::cout << "Default constructor of A" << '\n';
}
A(int i)
{
std::cout << "Inside the constructor of A with one int argument" << '\n';
}
A(double i)
{
std::cout << "Inside the constructor of A with one double argument" << '\n';
}
};
class B : A
{
using A::A;
public:
B()
{
std::cout << "Default constructor of B" << '\n';
}
};
int main()
{
B b(12);
std::cout << "End of main";
}
输出是:
Inside the constructor of A with one int argument
End of main
我理解为什么B
不调用 s 构造函数(请参阅C++ 中的构造函数继承。派生类的默认构造函数未被调用)并且我可以编写 a B(int)
,但问题是它A
有很多构造函数,并且在构造 a 时我希望调用B
相应的构造函数并且一个特定的构造函数。A
B
如何在不B
为每个A
构造函数编写一个构造函数的情况下实现这一目标?
换句话说,我希望的输出B b(12)
是
Inside the constructor of A with one int argument
Default constructor of B
End of main
并且还要B b(4.2)
成为
Inside the constructor of A with one double argument
Default constructor of B
End of main
B
无需多次重写构造函数。