Pau*_*lin 5 c++ operator-overloading
为什么有时候操作符覆盖被定义为类中的方法,比如
MyClass& MyClass::operatorFoo(MyClass& other) { .... return this; };
Run Code Online (Sandbox Code Playgroud)
有时这是一个单独的功能,比如
MyClass& operatorFoo(MyClass& first, MyClass& bar)
Run Code Online (Sandbox Code Playgroud)
它们是等价的吗?什么规则管理你何时以一种方式执行它以及何时执行另一种方式?
Tim*_*ter 11
如果您希望能够执行类似于3 + obj必须定义免费(非成员)运算符的操作.
如果您想让您的运营商受到保护或私有,您必须制作方法.
一些运营商不能是免费功能,例如operator->.
这已在这里得到解答:
小智 5
如果你有像+这样的二元运算符,通常需要在两个操作数上执行类型转换.例如,字符串连接运算符需要能够将其操作数中的一个或两个从char*转换为字符串.如果是这种情况,则它不能是成员函数,因为左手操作数将是*this,并且不会执行转换.
例如:
operator+( a, b ); // conversions performed on a and b
a->operator+( b ); // conversion can only be performed on b
Run Code Online (Sandbox Code Playgroud)