zoukankan      html  css  js  c++  java
  • 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
    知识共享,欢迎转载。
  • 相关阅读:
    if——while表达式详解
    java算法:抽象数据类型ADT
    java算法:FIFO队列
    Android_NetworkInfo以及判断手机是否联网
    java算法:堆栈ADT及实例
    java算法:数据项
    java算法:一流的ADT
    java算法:复合数据结构
    java算法:字符串
    java算法:基于应用ADT例子
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834920.html
Copyright © 2011-2022 走看看