Overloading unary operators (C++ only)

You overload a unary operator with either a nonstatic member function that has no parameters, or a nonmember function that has one parameter. Suppose a unary operator @ is called with the statement @t, where t is an object of type T. A nonstatic member function that overloads this operator would have the following form:
 return_type operator@()
A nonmember function that overloads the same operator would have the following form:
return_type operator@(T)
An overloaded unary operator may return any type.
The following example overloads the ! operator:
#include <iostream>
using namespace std;

struct X { };

void operator!(X) {
cout << "void operator!(X)" << endl;
}

struct Y {
void operator!() {
cout << "void Y::operator!()" << endl;
}
};

struct Z { };

int main() {
X ox; Y oy; Z oz;
!ox;
!oy;
// !oz;
}
The following is the output of the above example:
void operator!(X)
void Y::operator!()
The operator function call !ox is interpreted as operator!(X). The call !oy is interpreted as Y::operator!(). (The compiler would not allow !oz because the ! operator has not been defined for class Z.)
Related reference
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值