派生类的 C++ 构造函数,其中基类包含类成员

标签 c++ oop inheritance constructor

给定这段代码

class Address
{
  private:
    char * streetName;
    int houseNumber;
  public:
    Address(char* strName, int houseNumber)
    {....}
 }

class Person
{
   protected:
       char *name, * phoneNumber;
       Address addr;
   public:
       Person(char* n, char* pN, char* stN, char* hsN): addr(stN,hsN)
       {
           //...... assign variable for person
       }      
};

class Officer: public Person
{
    private:
        double salary;
    public:
        // How to write the constructor??
        Officer(char* _name, char*_phoneNumber, char* _streetName, int _streetNumber, double _salary): .... ????
}

如何为派生类 Officer 编写构造函数,它有五个输入变量,其中 _streetName 和 _streetNumber 将被提供给基类​​ Person 中包含的成员对象 addr?

最佳答案

您不能直接在派生的 class 初始化列表中设置基成员。

Officer(char* _name, char*_phoneNumber, char* _streetName, 
        int _streetNumber, double _salary):
     Person(_name, _phoneNumber, _streetName, _streetNumber),
     salary(_salary)

关于派生类的 C++ 构造函数,其中基类包含类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10650894/

相关文章:

c++ - std::ifstream 读取大数的错误大小

c++ - 如何将函数回调传递给类成员?

c++ - 使用虚拟继承对多态类使用 Cereal 进行序列化

JavaScript - 如何使继承成为可能

double/long double 的 C++ 精度行为

c++ - Qt永久删除文件

oop - 如果父类(super class)不包含代码是否可以接受?

language-agnostic - 将函数式语言概念与 OO 结合使用 - 有语言吗?

c++ - 跳棋程序的设计

javascript - 子类化 Javascript 数组。 TypeError : Array. prototype.toString 不是通用的