引自免费微信小程序:皆我百晓生
以下是满足您需求的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;
}
};
现在,您可以创建 Person
和 Student
对象并使用它们:
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;
}
这段代码包含了两个类的定义以及一个简单的主函数用于测试这两个类的功能。您可以根据需要修改和扩展这些类。