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

C++ 操作重载函数c+的可选函数参数+;,c++,operator-overloading,C++,Operator Overloading,我想重载没有参数但是二进制的管道操作符:(因为我不喜欢有参数,所以我想让函数带有可选参数(init到NULL)。 这是可能的吗?请建议我一种使用管道操作符的方法,无需任何参数 //example class oper{ public: oper(); void operator|(oper &t=NULL) { cout<<"im operator |"; } int main(){ | //should print "im operator |" }

我想重载没有参数但是二进制的管道操作符:(因为我不喜欢有参数,所以我想让函数带有可选参数(init到NULL)。 这是可能的吗?请建议我一种使用管道操作符的方法,无需任何参数

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

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

}
//示例
班级操作工{
公众:
oper();

虚操作符(OpER & t= null){cOUT

不能。C++中重载运算符的约束之一是重载与这些运算符的默认含义保持一致。

|
的默认含义始终涉及在二进制表达式中使用它(一个操作数在左边,另一个在右边,如
a | b
)。形式为
a |
|a
的表达式是语法错误,因此不可能重载
运算符()
允许这样的表达


<> P>不可能改变操作符的优先级或关联性。

我不知道C++是否允许这样的过载声明,但是语法分析器对不匹配的<代码> >代码>不满意。二进制运算符就是二进制操作符,因此需要两个显式操作数。C++没有空引用,所以<代码>oper&t=NULL
是胡说八道。