【问题标题】:how to specify constructor in header for child and parent class如何在子类和父类的标头中指定构造函数
【发布时间】:2021-12-19 09:04:16
【问题描述】:

我是 C++ 新手,在头文件 parent.h 中定义了一个父类。 它有一个构造函数Parent(int a, int b)

现在我要写子类child.h的头文件,它继承了与父类完全相同的构造函数,只有额外的成员函数。

我是否也必须在孩子的头文件中指定构造函数? (Child(int a, int b)) 还是只指定附加成员函数的签名,并在对应的child.cppfile 中指定构造函数?

【问题讨论】:

    标签: c++ c++11 inheritance header parent-child


    【解决方案1】:

    构造函数不会被继承。因此,如果您希望您的子类具有指定的构造函数,则需要在类定义中显式提供它:

    …
    Child(int a, int b) : Parent(a, b) {}
    …
    

    或者从父类中拉入定义:

    using Parent::Parent;
    

    请注意,这将引入 all 构造函数重载。这可能不是您想要的。

    【讨论】:

    • 谢谢!也就是说,我在孩子的头文件中也指定了构造函数 Child(int a, int b) 的签名?
    • @jesus_is_king 是的,你需要。其实我写的代码在头文件里。
    • @Someprogrammerdude using Parent::Parent;?
    • @songyuanyao 或者类似的东西是的...... :)
    • @songyuanyao 我故意没有添加,以保持简单,但现在看来我必须,为了完整性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多