考虑以下内容:
我从另一类CCD_ 2派生出一个类Child
。Parent
有大量重载构造函数。Child
类不需要任何其他参数进行构造。但是一旦调用了基类构造函数,我想在对象构造过程中做更多的事情。
所以我的问题是:使用现代C++,我能写一个单独的构造函数来接受任何重载基类构造函数接受的所有参数,并将它们转发给相应的构造函数吗?
明确地说:我知道using Parent::Parent
语法,但据我所知,这不会给我在调用基类构造函数后做任何事情的机会。
我在SO上和互联网深处搜索过,但我找不到这样的东西,尽管这对我来说是一个相当常见的用例。如果有任何帮助,我将不胜感激。
实现这一点的一种方法是在派生类中创建一个可变模板构造函数,将其所有参数传递给基类。然后,您可以在构造函数的主体中执行任何您想要的附加内容。看起来像
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
}
};