如何写问题中的类(语言-c++)

(1)试写出一个描述computer的类,该类包含name、manufacturer两个数据成员,该类有一个构造函数,可用于初始化这两个数据成员,该类还具有获取和设置这两个数据成员的函数成员,设置函数用于修改数据成员,获取函数用于将数据成员值打印到屏幕上
(2)试写出一个描述computer的派生类,该类包含name、manufacturer两个数据成员,该类有一个构造函数,可用于初始化这两个数据成员,该类还具有获取和设置这两个数据成员的函数成员,设置函数用于修改数据成员,获取函数用于将数据成员值打印到屏幕上
(3)试写语句完成如下功能:用构造函数生成一个os派生类的对象,构造函数用“Windows 11”、“微软”来初始化name、manufacturer 两个数据成员,调用获取函数打印上述两个成员到屏幕上;然后调用设置方法修改name为“Android”、manufacturer为“谷歌”,最后调用获取函数打印两个成员到屏幕上。

基于Monster 组和GPT的调写:

#include <iostream>
#include <string>

using namespace std;

// 基类 computer
class Computer {
protected:
    string name;
    string manufacturer;

public:
    // 构造函数
    Computer(string n, string m) : name(n), manufacturer(m) {}

    // 获取和设置数据成员的函数
    void setName(string n) { name = n; }
    void setManufacturer(string m) { manufacturer = m; }
    string getName() const { return name; }
    string getManufacturer() const { return manufacturer; }

    // 将数据成员值打印到屏幕上
    void print() const {
        cout << "Name: " << name << endl;
        cout << "Manufacturer: " << manufacturer << endl;
    }
};

// 派生类 os
class OS : public Computer {
public:
    // 构造函数
    OS(string n, string m) : Computer(n, m) {}
};

int main() {
    // 构造函数生成一个os派生类的对象
    OS os("Windows 11", "微软");

    // 调用获取函数打印上述两个成员到屏幕上
    os.print();

    // 调用设置方法修改name为“Android”、manufacturer为“谷歌”
    os.setName("Android");
    os.setManufacturer("谷歌");

    // 调用获取函数打印两个成员到屏幕上
    os.print();

    return 0;
}


下面是题目要求的C++代码实现:

#include <iostream>
#include <string>

using namespace std;

// 定义基类 Computer
class Computer {
public:
    // 构造函数
    Computer(string name, string manufacturer) {
        this->name = name;
        this->manufacturer = manufacturer;
    }
    // 获取 name
    string getName() {
        return name;
    }
    // 获取 manufacturer
    string getManufacturer() {
        return manufacturer;
    }
    // 设置 name
    void setName(string name) {
        this->name = name;
    }
    // 设置 manufacturer
    void setManufacturer(string manufacturer) {
        this->manufacturer = manufacturer;
    }
    // 打印信息
    void printInfo() {
        cout << "Name: " << name << endl;
        cout << "Manufacturer: " << manufacturer << endl;
    }
protected:
    string name; // 名称
    string manufacturer; // 制造商
};

// 定义派生类 OsComputer
class OsComputer : public Computer {
public:
    // 构造函数
    OsComputer(string name, string manufacturer) : Computer(name, manufacturer) {
    }
};

int main() {
    // 创建一个 OsComputer 对象,并初始化名称和制造商
    OsComputer myComputer("Windows 11", "Microsoft");
    // 打印信息
    myComputer.printInfo();
    // 修改名称和制造商
    myComputer.setName("Android");
    myComputer.setManufacturer("Google");
    // 打印信息
    myComputer.printInfo();
    return 0;
}


上述代码实现了题目要求的三个部分。

在第一部分中,我们定义了一个名为 Computer 的基类,它包含两个数据成员 name 和 manufacturer,以及一个构造函数用于初始化这两个数据成员。类还具有获取和设置这两个数据成员的函数成员,以及一个打印信息的函数成员。这些函数成员的实现都比较简单,直接访问对应的数据成员即可。

在第二部分中,我们定义了一个名为 OsComputer 的派生类,它继承了基类 Computer,包含相同的数据成员和函数成员。这里的构造函数调用了基类的构造函数进行初始化。

在第三部分中,我们首先创建了一个 OsComputer 对象 myComputer,构造函数用“Windows 11”、“微软”来初始化 name、manufacturer 两个数据成员。然后调用获取函数打印上述两个成员到屏幕上;接着调用设置方法修改 name 为“Android”、manufacturer 为“谷歌”,最后再次调用获取函数打印两个成员到屏幕上,以验证设置操作是否成功。