在继承 C++ 中调用 main 中的参数化构造函数

Posted

技术标签:

【中文标题】在继承 C++ 中调用 main 中的参数化构造函数【英文标题】:Parametrized constructor calling in main in Inheritance C++ 【发布时间】:2020-11-19 14:23:10 【问题描述】:

假设我有两个类 Mother 和 Daughter,其中 Daughter 公开地从 Mother 继承。 现在如果我想调用Daughter的参数化构造函数,该怎么做呢?

class Mother
 int age; 
  public: 
   Mother(int a) 
   age = a; 
   court << "Mother Paramterized constructor called!\n " ; 
   
;
class Daughter: public Mother 

   int height; 
   public: 
  Daughter(int h): Mother(x) 
   height = h; 
   court << "Daughter parametrized constructor!\n"; 
   
;

类定义如上(据我所知),但如何调用 Daughter 参数化构造函数?

【问题讨论】:

构造函数调用中的x是什么?你的意思是Daughter(int a, int h): Mother(a) 错误且效率低下,如图所示。请参阅上面的评论,并始终尽可能使用初始化部分。 【参考方案1】:

你可以调用参数化的构造函数

class Mother 
  int age; 
public: 
  Mother(int a) : age(a) 
    cout << "Mother Paramterized constructor called!\n " ; 
  
;

class Daughter: public Mother 
  int height; 
public: 
  Daughter(int a, int h): Mother(a), height(h) 
    cout << "Daughter parametrized constructor!\n"; 
  
;


int main() 
  Daughter d(10, 150);

输出:

Mother Paramterized constructor called!
 Daughter parametrized constructor!

【讨论】:

以上是关于在继承 C++ 中调用 main 中的参数化构造函数的主要内容,如果未能解决你的问题,请参考以下文章

C++ 类的继承三(继承中的构造与析构)

C++中,继承时,创建子类对象,能否在子类构造函数初始化列表里调用基类构造函数?

如何在 C++ 中调用基类的参数化构造函数?

c++继承总结

cython c++ 类继承不能实例化派生类

为啥我不能在 C++ 中用 new 调用参数化构造函数?