首页 > 解决方案 > ** 无法实现 C++ 运算符重载

问题描述

假设我有一个名为 Complex 的类,为什么允许我定义以下函数:

Complex operator+(Complex& c1, Complex& c2);

但我不能写:

Complex operator**(Complex& c1, Complex& c2);//for power

标签: c++operator-overloading

解决方案


**它本身不是一个有效的 C++ 运算符,它只是两个*没有空格的运算符。我们不能在 C++ 中创建新的运算符,但operator*可以重载为一元或二元运算符。operator*可以实现为非成员函数、成员函数或友元函数,具体取决于类结构。下面是一个operator*实现为二进制非成员函数的示例,它返回一个新Example对象。

struct Example {
    int x;
};

Example operator*(Example a, const Example& b){
    return a *= b;
}


推荐阅读