C ++:无效使用'void'

时间:2016-12-17 18:01:33

标签: c++

此代码应该打印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;
}

1 个答案:

答案 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;
}