#include <stdio.h> class OBJ{}; void test(OBJ&) { printf("test"); } int main() { OBJ obj; test(obj); test(OBJ()); //gcc编译错误 return 0; }
[quote=引用 15 楼 mymixing 的回复:] [quote=引用 4 楼 akirya 的回复:] 这个代码错的是VS,G++是正确的,这个代码不应该编译通过。
[quote=引用 18 楼 mymixing 的回复:] [quote=引用 16 楼 pengzhixi 的回复:] 好吧 看来你不太认同这个是右值。 那么你认同是一个临时对象不?
[quote=引用 4 楼 akirya 的回复:] 这个代码错的是VS,G++是正确的,这个代码不应该编译通过。
[quote=引用 16 楼 pengzhixi 的回复:] 好吧 看来你不太认同这个是右值。 那么你认同是一个临时对象不?
好吧 看来你不太认同这个是右值。 那么你认同是一个临时对象不?
个人也同样认为G++的处理是正确的,而vs的处理存在问题;如果这种用法,传入&是没有必要的,增加const吧
这个代码错的是VS,G++是正确的,这个代码不应该编译通过。
[quote=引用 8 楼 paschen 的回复:] 如果test的函数写成 void test(const OBJ&) 则没问题 所以如果函数类不修改传入的引用对象时,建议都用const进行修饰
如果test的函数写成 void test(const OBJ&) 则没问题 所以如果函数类不修改传入的引用对象时,建议都用const进行修饰
为何不把 test 函数改成 void test(const OBJ&) 或 void test(OBJ&&) 而要去改每一处调用的地方呢?
64,654
社区成员
250,484
社区内容
加载中
试试用AI创作助手写篇文章吧