You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为接收输入流参数的类构造函数设置默认参数?

为接收std::istream&的构造函数设置默认参数以支持无参实例化

要实现无参调用构造函数,你只需要给构造函数的std::istream&参数指定默认值为std::cin即可——因为std::cin是全局的左值对象,完全匹配非const左值引用的参数要求。

修改后的完整代码

#include <iostream>

class temp
{
public:
    // 为参数设置默认值std::cin
    temp(std::istream &is = std::cin) { is >> i; }
private:
    int i;
};

int main()
{
    temp obj(std::cin); // 正常调用,使用传入的输入流
    temp obj2;          // 现在可以无参调用,默认使用std::cin读取数据
}

补充说明

如果后续需要灵活切换默认输入源,也可以用重载构造函数的方式实现:

class temp
{
public:
    temp(std::istream &is) { is >> i; }
    temp() : temp(std::cin) {} // 无参构造函数委托给带参版本
private:
    int i;
};

但这种方式和“设置默认参数”的实现逻辑不同,若你明确要通过默认参数达成需求,第一种方法更直接。

内容的提问来源于stack exchange,提问作者hassanjawedqazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:09:45