C++运算符重载无法使用 **
C++ operator overloading not possible with **
假设我有一个名为 Complex 的类,为什么允许我定义以下函数:
Complex operator+(Complex& c1, Complex& c2);
但我不能写:
Complex operator**(Complex& c1, Complex& c2);//for power
**
本身不是一个有效的C++运算符,它只是两个没有空格的*
运算符。我们不能在C++中创建新的运算符,但operator*
可以作为一元或二元运算符重载。operator*
可以实现为非成员函数、成员函数或友元函数,具体取决于类结构。下面是一个operator*
作为二进制非成员函数实现的示例,该函数返回一个新的Example
对象。
struct Example {
int x;
};
Example operator*(Example a, const Example& b){
return a *= b;
}
从over.oper
中,您可以看到哪些运算符可以重载。您会注意到**
不是重载的有效运算符之一。但是,您可以使用^
运算符(尽管它通常用于按位(
如注释中所述,您无法以这种方式创建新运算符,因此无法为**
创建新运算符
相关文章:
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- <T> 通过模板化运算符重载将 std::complex 乘以双倍
- C++20概念:需要运算符重载
- 使用赋值运算符重载从类中返回jobject
- 在运算符重载定义中使用成员函数(const错误)
- 字节到位运算符重载C++
- 为什么在运算符重载时需要参考?
- 类中 c++ 的运算符 + 重载
- 算术复合运算符重载为非成员
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 交换运算符 + 重载会导致无限递归
- 如何理解新的运算符重载?
- 向量保持复数的运算符重载
- 如何创建运算符重载?
- 链接列表运算符重载没有打印出我想要的内容
- C++:需要帮助了解运算符重载错误
- 使用模板化运算符重载 XOR 运算符失败
- 如何确保接受的C++模板类型使运算符重载?
- 运算符重载使用运算符+添加类模板