gpt4 book ai didi

c++ - 使用模板的运算符重载

转载 作者:行者123 更新时间:2023-11-30 03:21:15 25 4
gpt4 key购买 nike

我正在尝试修改 Add 函数以表示运算符重载。

#include <iostream>
using namespace std;

template <class T>
class cpair
{
public:
cpair(T x = 0, T y = 0) { A = x; B = y; }
void print()
{
cout << A << " " << B << endl;
}
T A, B;
};

template <class T>
void Add(cpair<T> A1, cpair<T> A2, cpair<T> &R)
{
R.A = A1.A + A2.A;
R.B = A1.B + A2.B;
}

int main()
{
cpair<int> A1(4, 5), A2(1, 3), result;
Add(A1, A2, result);
result.print();

return 0;
}

我正在学习运算符重载,但我认为我没有正确实现它。我得到的错误是:

'operator= must be a member function'.

template <class T>
void operator=(const cpair<T> &A1, cpair<T> &A2, cpair<T> &R) {
R.A = A1.A + A2.A;
R.B = A1.B + A2.B;
}

int main()
{
cpair<int> A1(4, 5), A2(1, 3), result;
operator(A1, A2, result);
result.print();
}

您如何着手修改 Add 函数以表示运算符重载,然后在 Main 中调用该函数?谢谢。

最佳答案

看来你误会了很多。首先,如果您想重载加法运算符,您需要重载的是 operator+ 函数,而不是赋值运算符。

要解决此问题,您应该执行以下操作

template <class T>
cpair<T> operator+(cpair<T> const& a, cpair<T> const& b)
{
return cpair<T>(a.A + b.A, a.B + b.B);
}

其次,如果您重载了一个运算符,您可以像使用其他方式一样使用它。例如,例如

int a = 5, b = 7, r;

那么你会做

r = a + b;

这与重载运算符相同:

cpair<int> a(4, 5), b(1, 3), result;
result = a + b;

如果你想了解更多我建议你get a few good books to read .

关于c++ - 使用模板的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52203140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com