操作符重载( From C++ prime)

To overload an operator, you use a special function form called an operator function. An operator function has the form

operator op(argument-list)

where op is the symbol for the operator being overloaded. E.g, operator+() overloads the +operator and 

operator*() overloads the *operator.


Member and nonmember function:

Typically, the nonmember version is a friend function so that it can directly access the private data for a class. For example, consider the addition operator for the Time class. It has this prototype in the Time class declaration:
Time operator+(const Time & t) const; // member version
Instead, the class could use the following prototype:
friend Time operator+(const Time & t1, const Time & t2); // nonmember version
The addition operator requires two operands. For the member function version, one is passed implicitly via the  this pointer and the second is passed explicitly as a function argument. For the friend version, both are passed as arguments.


The compiler can convert the statement
T1 = T2 + T3; to either of the following:
T1 = T2.operator+(T3); // member function
T1 = operator+(T2, T3); // nonmember function

In a word, A nonmember version of an overloaded operator function requires as many formal parameters as
the operator has operands. A member version of the same operator requires one fewer parameter because one operand is passed implicitly as the invoking object.


 For some operators, as mentioned earlier, the member function is the only choice.
function is the only valid choice. Otherwise, it often doesn’t make much difference.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值