运算符重载(60分) class Product { string name; //产品名称 int price; //产品单价 int quantity; //剩余产品数量 public: Product(string n,int p int q); Product operator = (const Product &p); friend bool operator >(const Product &p1, const Product &p2); friend ostream& operator<<(ostream &out, Product &t ); }; 类Product说明如上所示,完成四个函数的定义,并在main函数中进行测试。
时间: 2024-02-14 12:15:15 浏览: 74
以下完整的代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Product {
private:
string name;
int price;
int quantity;
public:
Product(string n, int p, int q) : name(n), price(p), quantity(q) {}
Product operator=(const Product &p) {
name = p.name;
price = p.price;
quantity = p.quantity;
return *this;
}
friend bool operator>(const Product &p1, const Product &p2) {
return p1.price > p2.price;
}
friend ostream& operator<<(ostream &out, Product &t) {
out << "Product: " << t.name << ", Price: " << t.price << ", Quantity: " << t.quantity;
return out;
}
};
int main() {
Product p1("Product1", 100, 10);
Product p2("Product2", 200, 5);
cout << "p1: " << p1 << endl;
cout << "p2: " << p2 << endl;
p1 = p2;
cout << "After p1 = p2, p1: " << p1 << endl;
if (p1 > p2) {
cout << "p1 is more expensive than p2." << endl;
} else {
cout << "p1 is cheaper than p2." << endl;
}
return 0;
}
```
在这个实现中,我们定义了四个函数:
1. 构造函数Product,用于初始化Product对象的成员变量。
2. 赋值运算符重载函数operator=,用于将一个Product对象的值赋给另一个Product对象。
3. 大于号运算符重载函数operator>,用于比较两个Product对象的价格。
4. 插入运算符重载函数operator<<,用于将Product对象输出到流中。
在main函数中,我们创建了两个Product对象p1和p2,并对它们进行了一些操作:
1. 输出了它们的初始值。
2. 将p2的值赋给p1。
3. 比较了p1和p2的价格大小。
最后,我们在控制台上输出了这些操作的结果。
阅读全文