考虑以下:
我Child
从另一个班级派生一个班级Parent
。Parent
有很多重载的构造函数。本Child
类并不需要任何建造更多的参数。但是,一旦基类构造函数被调用,我想在对象构造过程中做更多的事情。
所以我的问题是:使用Modern C ++,我可以编写一个构造函数来接受所有重载基类构造函数所接受的所有参数,然后将它们转发给相应的参数吗?
明确的说:据我所知,我知道using Parent::Parent
语法,但这不会给我机会在调用基类构造函数之后做任何事情。
我在SO上和Internet的深处进行了搜索,但是找不到类似的东西,即使在我看来这是一个相当普遍的用例。任何帮助将非常感激。
一种实现方法是在派生类中创建可变参数模板构造函数,该构造函数将其所有参数传递给基类。然后,您可以在该构造函数的主体中执行任何所需的其他操作。看起来像
struct Base
{
Base (int) {}
Base(int, int) {}
//...
};
struct Derived : Base
{
template<typename... Args>
Derived(Args&&... args) : Base(std::forward<Args>(args)...) // <- forward all arguments to the base class
{
// additional stuff here
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句