84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
void fun(ostream &os) //可以
main中,ostream &os //不可以,为什么?ostream os //不可以,为什么
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
当使用pass-by-value进行函数调用时会对参数进行拷贝初始化,而C++系统由于避免IO资源冲突或内存泄露问题从而规定了IO对象无法进行拷贝。
在STL中iostream的拷贝构造函数被设置为delete(C++11),旧版本中将其拷贝构造函数和拷贝赋值操作符声明为private且无定义来阻止拷贝。(此处可参见《Effective C++》条款06)
所以将iostream作为参数进行传递时需使用pass-by-reference而非pass-by-value。
当使用pass-by-value进行函数调用时会对参数进行拷贝初始化,而C++系统由于避免IO资源冲突或内存泄露问题从而规定了IO对象无法进行拷贝。
在STL中iostream的拷贝构造函数被设置为delete(C++11),旧版本中将其拷贝构造函数和拷贝赋值操作符声明为private且无定义来阻止拷贝。(此处可参见《Effective C++》条款06)
所以将iostream作为参数进行传递时需使用pass-by-reference而非pass-by-value。