You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何将Person类构造参数继承到Student、Teacher子类并新增属性

解决方法

C++中派生类需要通过构造函数初始化列表显式调用基类的带参构造,完成基类属性的初始化,具体修改如下:

核心修改逻辑

  • 子类构造函数的入参需要先包含基类Person构造需要的所有6个参数,再追加自身新增属性的参数
  • 在子类构造函数的初始化列表中先调用基类Person的构造函数传入对应参数,再初始化自身新增属性

代码修改示例

1. Student类修改

class Student: public Person{
public:
    int roll;
    string favoriteSubject;
    // 构造函数入参:先接基类6个参数,再接自身2个参数
    Student(string a, string b, string c, int d, string e, string f, int r, string fs)
    : Person(a, b, c, d, e, f), roll(r), favoriteSubject(fs) {
        // 可按需添加子类自定义初始化逻辑,无需求则留空
    }
};

2. Teacher类修改

class Teacher: public Person{
public:
    string subject;
    // 构造函数入参:先接基类6个参数,再接自身1个参数
    Teacher(string a, string b, string c, int d, string e, string f, string s)
    : Person(a, b, c, d, e, f), subject(s) {
        // 可按需添加子类自定义初始化逻辑,无需求则留空
    }
};

优化建议

原基类Person的构造函数里输出写死了Student name,给Teacher实例使用时会输出内容不符的问题,建议修改为通用内容:

// 将Person构造函数中第一行输出修改为
cout << "Name: " << name << endl;
// 第二行输出也可修改为通用的 "Identity: " << level << 适配所有派生类

调用示例

int main() {
    // 实例化Student对象
    Student stu("张三", "大三", "计算机2组", 21, "138xxxx1234", "男", 2023001, "计算机组成原理");
    // 实例化Teacher对象
    Teacher tea("李丽", "副教授", "计算机系教研1组", 38, "139xxxx5678", "女", "C++程序设计");
    return 0;
}

内容的提问来源于stack exchange,提问作者Md. Maruf Sarker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:15:03