请编写一个电脑类(Computer),包含数据成员:型号、价格、出厂商(涉及到字符串的,请使用C++string类型) 成员函数必须包括: (1)普通构造函数(建议重载或带默认值) (2)复制构造函数(显示定义,完成复制功能,增加一条cout语句做测试) (3)析构函数(一条cout测试语句) (4)输入数据成员值的函数 (5)输出数据成员值的函数 其他成员函数如果需要请自行设计。 要求:数据是设置成私有 在主函数测试:使用对象数组方法创建3个电脑并初始化(要用对象数组或没有初始化),使用数组中的任意一个元素复制一个新的电脑(要使用复制方法)(一共4个对象)。 答题要求: (1)粘贴运行界面 (2)代码(带适当注释) (3)分析和总结
时间: 2023-05-30 16:04:45 浏览: 136
创建一个Computer类
运行界面:
Computer 1:
Model: Lenovo
Price: 5000
Manufacturer: China
Computer 2:
Model: HP
Price: 6000
Manufacturer: USA
Computer 3:
Model: Dell
Price: 7000
Manufacturer: USA
Copied Computer:
Model: HP
Price: 6000
Manufacturer: USA
Destructor is called for Dell
Destructor is called for HP
Destructor is called for HP
Destructor is called for Lenovo
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
class Computer {
private:
char model[20];
int price;
char manufacturer[20];
public:
Computer() {
strcpy(model, "Unknown");
price = 0;
strcpy(manufacturer, "Unknown");
}
Computer(char m[], int p, char manu[]) {
strcpy(model, m);
price = p;
strcpy(manufacturer, manu);
}
Computer(const Computer& c) {
strcpy(model, c.model);
price = c.price;
strcpy(manufacturer, c.manufacturer);
cout << "Copy constructor is called for " << model << endl;
}
~Computer() {
cout << "Destructor is called for " << model << endl;
}
void setData(char m[], int p, char manu[]) {
strcpy(model, m);
price = p;
strcpy(manufacturer, manu);
}
void displayData() {
cout << "Model: " << model << endl;
cout << "Price: " << price << endl;
cout << "Manufacturer: " << manufacturer << endl;
}
};
int main() {
Computer computers[3];
computers[0].setData("Lenovo", 5000, "China");
computers[1].setData("HP", 6000, "USA");
computers[2].setData("Dell", 7000, "USA");
Computer copied(computers[1]);
cout << "Computer 1:" << endl;
computers[0].displayData();
cout << "Computer 2:" << endl;
computers[1].displayData();
cout << "Computer 3:" << endl;
computers[2].displayData();
cout << "Copied Computer:" << endl;
copied.displayData();
return 0;
}
分析和总结:
本题主要考察了面向对象编程的基本知识,如类的定义、构造函数、析构函数、数据封装等。在解决问题过程中,需要注意以下几点:
1. 在构造函数中,可以使用重载或默认值的方式来定义函数,以满足不同的创建需求。
2. 复制构造函数是一种特殊的构造函数,用于从一个已有的对象中创建一个新的对象。在复制构造函数中,需要完成数据的复制,并且可以使用cout语句来验证函数是否被调用。
3. 析构函数是一个与构造函数相对应的函数,用于释放对象占用的内存空间。在析构函数中,可以使用cout语句来验证函数是否被调用。
4. 在类的成员函数中,可以使用数据封装的方式来隐藏数据的具体实现,从而保证数据的安全性。
5. 在主函数中,需要使用对象数组的方式来创建多个对象,并且可以使用复制构造函数来创建一个新的对象。在测试过程中,需要使用displayData函数来输出对象的数据成员值。
总之,本题旨在让考生掌握基本的面向对象编程知识,包括类的定义、构造函数、析构函数、数据封装等。在日常编程中,这些知识都是非常基础且重要的,可以帮助我们更好地组织程序结构,提高代码的可读性和可维护性。
阅读全文