c++ - 数组的重载运算符

标签 c++ arrays operator-overloading

是否可以为数组的加法重载加法运算符(+)?像这样的东西:

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::vectorstd::array)参数的函数——无论如何这可能更有用。

请务必考虑如果左右操作数的大小不同,您的operator+ 应该做什么。 (抛出异常是一种合理的方法。)

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

相关文章:

arrays - 使用此算法在最坏情况下二分查找将进行多少次比较?

javascript - 通过唯一关键字分隔 JavaScript 数组

c++ - 从 C++ native Windows 应用程序接收 WebRTC 调用

C++加载外部类exe

c++ - 使用异步调用模板函数

c++ - 如何显式调用命名空间限定的析构函数?

java - 以板格式将 2D 数组打印到控制台

c++ - 为什么 operator char*() 在 bool 上下文中覆盖 operator bool() const?

c++ - 使 "cout << obj1 + obj2 << endl;"工作

C++重载运算符++