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

C++ 使用cin将输入作为函数参数传递,c++,constructor,arguments,cin,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 我的意思是,我不想仅仅为了将值传递给函数而声

我的节目:

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


我的意思是,我不想仅仅为了将值传递给函数而声明变量。有什么办法可以避免吗?如果是,我也可以为施工人员使用它吗?谢谢

您可以这样做:

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

这就是你需要的吗?

不需要。现在,您可以将其放入函数中:

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
创建一些对象/内存空间,以便读取并传递它。你在哪里做这件事可以改变。但简单地回答你的问题:不