此代码应该打印i = 35作为结果,但不知何故它甚至不编译。为什么?
#include <iostream>
using namespace std;
void increment(int &p){
p = p +10;
}
int main()
{
int i = 10;
increment(i) += 15;
cout<<"i = " <<i<<endl;
return 0;
}
答案 0 :(得分:4)
不,不应该! increment
具有void
作为返回类型,这意味着对此函数的表达式调用没有值。如果您希望该调用能够在赋值的左侧部分使用,则必须返回左值。
基本上,当您写a=b
a
表示容器但b
表示值时。
您可以尝试:
int &increment(int &p){
p = p +10;
return p; // return the reference passed as argument...
}
int main()
{
int i = 10;
increment(i) += 15;
cout<<"i = " <<i<<endl;
return 0;
}