使用cin将输入作为函数参数传递

时间:2014-01-04 19:41:09

标签: c++ constructor arguments cin

我的节目:

class test
{
    int k;
    public:
    void changeval(int i){k=i;}
};
int main()
{   
    test obj; 
    int i;
    cin>>i;
    obj.changeval(i);
    return 0;
}

有什么方法可以直接将用户的输入作为参数传递给函数changeval(int),甚至没有将值初始化为i ??

我的意思是,我不想声明一个变量只是为了将值传递给函数。有什么办法可以避免吗?如果是,我也可以将它用于构造函数吗?谢谢。

2 个答案:

答案 0 :(得分:6)

不。现在,你可以把它放到一个函数中:

int readInt(std::istream& stream)
{
    int i;
    stream >> i; // Cross your fingers this doesn't fail
    return i;
}

// Then in your code:
obj.changeval(readInt(std::cin));

但是,当然,这仍会创建一个int(它只是将其移动到readInt函数。)

实际上,你int创建一些对象/内存空间,所以你可以阅读并传递它。你这样做可以改变。但只是回答你的问题:不。

答案 1 :(得分:1)

你可以这样做:

void changeval(istream& in) { in >> k; }
...
changeval(cin);

这就是你需要的吗?