用C++补全下列代码。重载运算符“<<”和“>>”,使其能够输入一件商品的信息和输出这件商品的信息。商品的信息有编号、商品名和价格。假如商品类Merchandise的框架如下: class Merchandise{ public: Merchandise(); ~Merchandise(); friend istream& operator>>(istream & in, Merchandise& s); //输入一件商品的信息 friend ostream& operator>>(ostream & out, Merchandise& s);//输出一件商品的信息 private: int no; //编号 char* name; //商品名 double price; //价格 }; 要求实现该类,并编写以下的main函数对该类进行操作。 int main() { Merchandise mer; cin>>mer; cout<<mer; return 0; }
时间: 2024-03-05 17:55:19 浏览: 93
C++流中重载了运算符<<,它是一个( )。 A.用于输出操作的成员函.docx
下面是实现了重载运算符“<<”和“>>”的Merchandise类的代码:
```
#include <iostream>
#include <cstring>
using namespace std;
class Merchandise{
public:
Merchandise();
~Merchandise();
friend istream& operator>>(istream & in, Merchandise& s); //输入一件商品的信息
friend ostream& operator<<(ostream & out, Merchandise& s);//输出一件商品的信息
private:
int no; //编号
char* name; //商品名
double price; //价格
};
Merchandise::Merchandise() {
no = 0;
name = NULL;
price = 0.0;
}
Merchandise::~Merchandise() {
if (name != NULL) {
delete[] name;
}
}
istream& operator>>(istream & in, Merchandise& s) {
cout << "请输入商品编号:" << endl;
in >> s.no;
cout << "请输入商品名称:" << endl;
char temp[100];
in >> temp;
if (s.name != NULL) {
delete[] s.name;
}
s.name = new char[strlen(temp) + 1];
strcpy(s.name, temp);
cout << "请输入商品价格:" << endl;
in >> s.price;
return in;
}
ostream& operator<<(ostream & out, Merchandise& s) {
out << "商品编号:" << s.no << endl;
out << "商品名称:" << s.name << endl;
out << "商品价格:" << s.price << endl;
return out;
}
int main() {
Merchandise mer;
cin >> mer;
cout << mer;
return 0;
}
```
在main函数中,先创建了一个Merchandise对象mer,然后通过cin输入商品信息,再通过cout输出商品信息。
阅读全文