我想重载管道运算符没有参数,但是二进制:(因为我不喜欢有参数我认为使用可选的参数(init为NULL)来创建函数。 那可能吗?请建议我使用没有参数的管道操作符的方法!
//example
class oper{
public:
oper();
void operator|(oper &t=NULL) { cout<<"im operator |";
}
int main(){
| //should print "im operator |"
}
答案 0 :(得分:1)
你做不到。在C ++中重载运算符的一个限制是,重载仍然与这些运算符的默认含义兼容。
|
的默认含义总是涉及它在二进制表达式中的使用(左边有一个操作数,右边有一个操作数,如a | b
)。表单a|
或|a
的表达式是语法错误,因此无法重载operator|()
以允许此类表达式。
也无法更改运算符的优先级或关联性。