• c++IO对象不可复制


    IO类型的3个独立的头文件:

    iostream定义读写控制窗口的类型,

    fstream 定义读写已命名文件的类型,             (包含fstream类)

    sstream定义读写存储在内存中的string对象。(包含了stringstream类)

    IO类型不可复制或赋值

    因此,IO类型不可存储在vector容器中。(IO是流对象,而流对象是不能复制的,所以不能存储在vector容器中)

    ofstream out1,out2;
    out2 = out1; //error : cannot assign stream objects
    ofstream print(ofstream);
    out2 = print(out2); //error:cannot copy stream objects
    形参或返回类型也不能为流类型。如果要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用。


    ofstream &print(ofstream&); //ok:takes a reference,no copy
    while(print(out2)) { ... }          // ok:pass reference to out2
    一般,如果要传递IO对象以便对它进行读写,可用非const引用的方式传递这个流对象。对IO对象的读写会改变它的状态,因此引用必须是非const的。


    练习:


    1)ostream print(ostream os);


         这个声明是错的:首先,IO对象是不能复制的,要传递或返回IO对象时,必须传递或返回指向该对象的指针或引用。


          应该改成:   ostream &print(ostream& os);



    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    数据结构之线性顺序表ArrayList(Java实现)
    大话数据库技术之数据的检索
    JQuery表单元素过滤选择器
    字典序最小问题
    liferay中数据库表的解析未完
    转载如何实现portlet之间的传递参数
    SpringMVC学习笔记1
    深度优先搜索算法
    Ants-穷举算法
    三角形-穷举算法
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834920.html
Copyright © 2020-2023  润新知