利用模板函数实现Person类对象相加并输出类对象
时间: 2024-03-05 15:50:43 浏览: 17
很抱歉,我之前的回答可能有误,我没有注意到你要求使用模板函数实现。以下是修改过的实现代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
Person() {}
Person(string name, int age) : name_(name), age_(age) {}
Person operator+(const Person& other) const {
Person result;
result.name_ = name_ + other.name_;
result.age_ = age_ + other.age_;
return result;
}
friend ostream& operator<<(ostream& os, const Person& person) {
os << "Name: " << person.name_ << ", Age: " << person.age_;
return os;
}
private:
string name_;
int age_;
};
template<typename T>
void addAndPrint(const T& a, const T& b) {
T result = a + b;
cout << result << endl;
}
int main() {
Person p1("Alice", 25);
Person p2("Bob", 30);
addAndPrint(p1, p2); // 输出 "Name: AliceBob, Age: 55"
return 0;
}
```
在这个示例中,我们使用了一个模板函数 `addAndPrint`,它接受两个同类型的参数 `a` 和 `b`,并将它们相加并输出结果。在 `main` 函数中,我们创建了两个 `Person` 对象 `p1` 和 `p2`,并将它们作为参数传递给了 `addAndPrint` 函数,最终输出了它们相加后的结果。
由于 `Person` 类已经重载了 `operator+` 和 `operator<<`,所以我们可以直接在模板函数中使用它们。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)