c++ - ** 无法实现 C++ 运算符重载
问题描述
假设我有一个名为 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;
}
推荐阅读
- uri - 跨浏览器文件 URI 的 3 或 5 个斜杠
- python - 如何通过检查它是否与给定模式匹配来对 python 列表进行排序?
- android - ConstraintLayout 中的全景 ImageView
- python - 无法为 python 2.4.3 安装 pip?
- ios - Firebase 动态链接
- module - 如何修复 CMake Fortran 模块依赖性?
- java - 在 Java 8+ 中对地图进行分区
- javascript - 如何根据数据库内容创建 HTML 按钮?
- python - 如何在不使用恶意安装程序的情况下在 Windows 10 Pro 上安装 Python?
- php - 在 Laravel 中,有没有办法删除旧的撤销/过期护照令牌