对于C++中的后缀++操作符,我可以使用重载前缀++算子吗? 在C++中,尤其是Visual Studio 2013 C++,我遇到了一个混淆代码: class C { C operator++() { ... } // C operator++(int dummy) { // ... // } } C obj; ++obj; // This should be fine! obj++; // This should not be fine, but there is no compilation error.

对于C++中的后缀++操作符,我可以使用重载前缀++算子吗? 在C++中,尤其是Visual Studio 2013 C++,我遇到了一个混淆代码: class C { C operator++() { ... } // C operator++(int dummy) { // ... // } } C obj; ++obj; // This should be fine! obj++; // This should not be fine, but there is no compilation error.,c++,overloading,operator-keyword,C++,Overloading,Operator Keyword,在obj++中,在示例中调用重载前缀+。 我认为这个程序不应该被编译 有什么想法吗?警告C4620:没有为类型“C”找到后缀形式的“operator++”,使用前缀形式-是的,该代码格式不正确,但编译器的义务仅限于发出诊断消息,就像它发出警告一样。如果不在g++上编译,可能您使用了编译器扩展惯例,操作符++应该返回C&太好了!谢谢T.C.和vsoftco!!!可能您忽略了其他地方的越界C运算符++C,int dummy{return++C;}

在obj++中,在示例中调用重载前缀+。 我认为这个程序不应该被编译


有什么想法吗?

警告C4620:没有为类型“C”找到后缀形式的“operator++”,使用前缀形式-是的,该代码格式不正确,但编译器的义务仅限于发出诊断消息,就像它发出警告一样。如果不在g++上编译,可能您使用了编译器扩展惯例,操作符++应该返回C&太好了!谢谢T.C.和vsoftco!!!可能您忽略了其他地方的越界C运算符++C,int dummy{return++C;}