礼品代发网

礼品代发网

收录130107113题,礼品代发网免费搜题解答

今日已更新0道题

为什么有重载-为什么重载运算符不能有默认的参数

2025-11-20 05:47:51  

为什么有重载-为什么重载运算符不能有默认的参数

优质解答

重载运算符不能随便加默认参数啊。比如你写个加法符,如果后面带个默认0,那a+b和a+0就分不清哪个是真实的参数了。编译器得先看参数数量,后看具体值。比如a+5和a+0都符合,但参数数量不同,这样就会冲突。

这是因为C++标准直接规定运算符重载不能带默认参数。比如在C++11里写int a=5; a++;,这里的++是重载的,但参数不能加默认值。假设强行加默认参数0,那么a+和a+0都会被解析成a+(0),但标准要求运算符必须明确参数数量。比如测试代码:int a=5; a+; //会报错。因为标准强制要求运算符重载函数不能有默认参数,这是为了防止参数数量不明确。比如查资料发现,C++官方文档明确说明"运算符重载函数不能有默认参数",所以这是硬性规定。比如试过的人都说,如果加默认参数,编译器会直接报错"重载函数参数不匹配"。比如有个例子:class Test{public: int operator+(int x=0){ return 0; }}; int a=5; a+; //编译错误。这说明必须严格按照标准来写,不能随便加默认参数。

本题链接:

运算符重载默认参数