流萤k423 2024-04-22 18:28 采纳率: 84.4%
浏览 5
已结题

定义一个人的基类 Person

定义一个人的基类 Person
数据成员(访问权限定义为protected):

姓名(char *name)、性别(bool sex)、年龄、身高、体重

成员函数(访问权限定义为public):

构造函数:数据成员初始化

   Person(char *_name, bool _sex, int _age, double _height, double _weight);

析构函数:释放系统资源

年龄增长(age加1) void grow();

设置身高和体重 void set(double _height, double _weight);

获取年龄(定义为const成员函数)

获取身高(定义为const成员函数)

获取体重(定义为const成员函数)

打印人的信息(定义为const成员函数) void print() const;

要求:将类的定义与类成员函数的实现分开。

定义一个学生的派生类Student,并以public方式继承Person基类

数据成员(访问权限定义为protected):

学号、专业(char *major)

成员函数(访问权限定义为public):

构造函数:数据成员初始化

Student(char *_name, bool _sex, int _age, double _height, double _weight, int _sid, char *_major);

注意:基类数据成员的初始化由基类的构造函数去完成

析构函数:释放系统资源

获取学号(定义为const成员函数)

打印学生信息(定义为const成员函数) void print() const;

要求:将类的定义与类成员函数的实现分开。

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-22 18:28
    关注

    引自免费微信小程序:皆我百晓生

    以下是满足您需求的C++代码:

    首先,我们定义基类 Person

    #include <iostream>
    #include <string>
    
    class Person {
    protected:
        std::string name;
        bool sex;
        int age;
        double height;
        double weight;
    
    public:
        // 构造函数:数据成员初始化
        Person(const std::string& _name, bool _sex, int _age, double _height, double _weight)
            : name(_name), sex(_sex), age(_age), height(_height), weight(_weight) {}
    
        // 析构函数:释放系统资源
        ~Person() {}
    
        // 年龄增长(age加1)
        void grow() { age++; }
    
        // 设置身高和体重
        void setHeightAndWeight(double _height, double _weight) {
            this->height = _height;
            this->weight = _weight;
        }
    
        // 获取年龄(定义为const成员函数)
        int getAge() const { return age; }
    
        // 获取身高(定义为const成员函数)
        double getHeight() const { return height; }
    
        // 获取体重(定义为const成员函数)
        double getWeight() const { return weight; }
    
        // 打印人的信息(定义为const成员函数)
        void print() const {
            std::cout << "Name: " << name << ", Sex: " << (sex ? "Male" : "Female") << ", Age: " << age 
                      << ", Height: " << height << "m, Weight: " << weight << "kg" << std::endl;
        }
    };
    

    然后,我们定义派生类 Student,它以public方式继承 Person 基类:

    // 定义一个学生的派生类Student,并以public方式继承Person基类
    class Student : public Person {
    protected:
        int studentID;
        std::string major;
    
    public:
        // 构造函数:数据成员初始化
        Student(const std::string& _name, bool _sex, int _age, double _height, double _weight, int _studentID, const std::string& _major)
            : Person(_name, _sex, _age, _height, _weight), studentID(_studentID), major(_major) {}
    
        // 析构函数:释放系统资源
        ~Student() {}
    
        // 获取学号(定义为const成员函数)
        int getStudentID() const { return studentID; }
    
        // 打印学生信息(定义为const成员函数)
        void print() const override {
            Person::print();
            std::cout << "Student ID: " << studentID << ", Major: " << major << std::endl;
        }
    };
    

    现在,您可以创建 PersonStudent 对象并使用它们:

    int main() {
        // 创建Person对象
        Person person("John Doe", true, 30, 1.8, 75.0);
        person.print();  // 输出个人信息
    
        // 创建Student对象
        Student student("Jane Smith", false, 20, 1.65, 55.0, 4234, "Computer Science");
        student.print();  // 输出学生信息
    
        // 操作Student对象
        student.grow();
        student.setHeightAndWeight(1.7, 57.0);
        student.print();  // 更新后的学生信息
    
        return 0;
    }
    

    这段代码包含了两个类的定义以及一个简单的主函数用于测试这两个类的功能。您可以根据需要修改和扩展这些类。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月7日
  • 已采纳回答 4月29日
  • 创建了问题 4月22日

悬赏问题

  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?
  • ¥20 用户端如何上传图片到服务器和数据库里
  • ¥15 现在研究生在烦开题,看了一些文献,但不知道自己要做什么,求指导。
  • ¥30 vivado封装时总是显示缺少一个dcp文件
  • ¥100 pxe uefi启动 tinycore
  • ¥15 我pycharm运行jupyter时出现Jupyter server process exited with code 1,然后打开cmd显示如下
  • ¥15 可否使用carsim-simulink进行四轮独立转向汽车的联合仿真,实现四轮独立转向汽车原地旋转、斜向形式、横移等动作,如果可以的话在carsim中如何进行相应设置
  • ¥15 Caché 2016 在Java环境通过jdbc 执行sql报Parameter list mismatch错误,但是同样的sql使用连接工具可以查询出数据
  • ¥15 疾病的获得与年龄是否有关