如何为接收输入流参数的类构造函数设置默认参数?
为接收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
相关产品推荐
相关产品推荐

