是否可以为数组的加法重载加法运算符(+)?像这样的东西:
double operator+ (double a[], double b[])
{
double c[];
c[] = a[] + b[];
return c;
}
最佳答案
没有。
“T 的数组”类型的参数在编译时被调整为类型“指向 T 的指针”,因此您的声明:
double operator+ (double a[], double b[])
真正的意思是:
double operator+ (double *a, double *b)
而且你不能为指针类型定义一个重载的operator+
(至少gcc不这么认为,我相信它是正确的)。
也不能声明一个以数组类型作为其返回类型的函数;如果你尝试,它不会调整为指针类型,它只是非法的。
您可以定义接受某种容器类型(std::vector
、std::array
)参数的函数——无论如何这可能更有用。
请务必考虑如果左右操作数的大小不同,您的operator+
应该做什么。 (抛出异常是一种合理的方法。)
关于c++ - 数组的重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16825156/