帮我用c++写一个类 包含各种重载运算符,友元函数,以及使用,写出完整代码
时间: 2024-02-05 08:04:22 浏览: 76
用类的友元函数重载单目运算符-C++面向对象程序设计教程 第4章 运算符重载
好的,下面是一个包含各种重载运算符、友元函数的类的完整 C++ 代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
Person(string n, int a, string c) : name(n), age(a), city(c) {}
// 重载运算符
bool operator==(const Person& rhs) const {
return name == rhs.name && age == rhs.age && city == rhs.city;
}
bool operator!=(const Person& rhs) const {
return !(*this == rhs);
}
// 友元函数
friend ostream& operator<<(ostream& os, const Person& person) {
os << "Name: " << person.name << ", Age: " << person.age << ", City: " << person.city << endl;
return os;
}
private:
string name;
int age;
string city;
};
int main() {
Person p1("Alice", 25, "New York");
Person p2("Bob", 30, "Los Angeles");
cout << p1 << p2;
if (p1 == p2) {
cout << "p1 and p2 are the same person." << endl;
} else {
cout << "p1 and p2 are different people." << endl;
}
return 0;
}
```
在这段代码中,我们定义了一个 `Person` 类,它包含了三个私有成员变量 `name`、`age` 和 `city`。我们重载了运算符 `==` 和 `!=`,以实现两个 `Person` 对象之间的相等比较。我们还定义了一个友元函数 `operator<<`,用于输出类对象的信息。
在 `main()` 函数中,我们创建了两个 `Person` 对象,并打印它们的信息。然后,我们使用重载的 `==` 运算符比较这两个对象是否相等,并输出比较结果。
注意,由于 `operator<<` 是一个友元函数,它可以直接访问类的私有成员变量。另外,由于 `Person` 类没有定义析构函数,我们不需要使用 `delete` 运算符来释放它的对象。
阅读全文