操作重载函数c ++的可选函数参数

时间:2016-01-12 03:45:36

标签: c++ operator-overloading

我想重载管道运算符没有参数,但是二进制:(因为我不喜欢有参数我认为使用可选的参数(init为NULL)来创建函数。 那可能吗?请建议我使用没有参数的管道操作符的方法!

//example
class oper{
public:
  oper();
  void operator|(oper &t=NULL) { cout<<"im operator |";
}

int main(){
  |    //should print "im operator |"

}

1 个答案:

答案 0 :(得分:1)

你做不到。在C ++中重载运算符的一个限制是,重载仍然与这些运算符的默认含义兼容。

|的默认含义总是涉及它在二进制表达式中的使用(左边有一个操作数,右边有一个操作数,如a | b)。表单a||a的表达式是语法错误,因此无法重载operator|()以允许此类表达式。

也无法更改运算符的优先级或关联性。