C++运算符重载顺序
C++ operator overloading order
可能重复:
C++中的运算符重载为int+obj
我覆盖*运算符如下:
Point Point::operator *(float scale){
Point point(this->x*scale, this->y*scale);
return point;
}
如何修复此问题:
Point p1 (5.0, 10.0);
Point p2 = p1*4; //works fine
Point p3 = 4*p1 //error: no match for 'operator*'
编写一个免费函数,如下所示:
Point operator *(float scale, Point p)
{
return p * scale;
}
您将运算符重载为一个自由函数,并提供它的两个版本,而不是将其重载为成员函数。
Point operator *(float scale, Point p);
Point operator *(Point p, float scale);
有了这些:
第1个版本支持:
Point p3 = 4*p1;
第二个版本支持:
Point p2 = p1*4;
相关文章:
- 继承函数的重载解析
- 函数模板实例化、替换和重载解析的顺序是什么?
- 为什么重载的函数模板顺序对基本类型很重要
- 重载运算符:使用C++文本时的操作数顺序
- 重载函数声明的顺序在 c++ 中重要吗?
- 重载运算符以允许C++中参数的不同顺序
- 试图使用重载C++的运算符按字母顺序对图书向量进行排序
- *运算符重载中的操作数顺序
- 通过模板函数重载以正向顺序进行模板递归(关于std::tuple上的迭代)
- std::ostringstream 运算符重载搜索顺序
- 通过交换参数顺序来重载函数
- 用私有方法重载公共方法时函数顺序的最佳实践
- C++运算符重载顺序
- 重载逗号操作符真的会影响其操作数的求值顺序吗?
- 重载模板函数的声明顺序
- 模板、函数重载及其出现顺序
- c++:函数重载和声明顺序的混淆
- 重载的强制转换和后增量运算符——顺序错误
- 后缀运算符重载顺序
- 构造函数和重载运算符执行顺序