IO对象不可复制和赋值

载自 《c++ primer 第四版》 第八章第一节

 

    ofstream out1, out2;

    out1 = out2;          //error: cannot assign stream objects

   

    //print function: parameter is copide

    ofstream print(ofstream);

    out2 = print(out2);  //error: cannot copy stream objects   

 

     1. 只有支持复制的元素类型可以存储在 vector 或其他容器类型里. 由于流对象不能复制, 因此不能存储在 vector (或其他) 容器中(即不存在存储流对象的 vector 或其他容器).

 

     2. 形参或返回类型也不能为流类型. 如果需要传递或返回 IO 对象, 则必须传递或返回指向该对象的指针或引用:

 

     ofstream &print(ofstream &);             //ok: take a reference , no copy

     while(print(out2)) {/*.............*/}      //ok: pass reference to out2

 

     一般情况下, 如果要传递 IO 对象以便对它进行读写, 可用非 const 引用的方式传递这个流对象. 对 IO 对象的读写会改变它的状态, 因此引用必须是非 const 的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值