a+b 为表达式,按照语法规则,虽然a、b有效,但是这类中间值退出函数之后就要消亡,你的是const int &返回,自然就会生成一个临时无名变量来保存这个值警告很正常,因为是引用,最好是退出后不消亡的空间才不会警告当然,如果你不是const,自然不能编译,因为int & 需要绑定到变量上
返回引用的时候一定要返回生存期在这个函数以外的变量a+b是个临时值,而且还是个右值,你返回对它的引用是没有任何意义的