标准库类型不允许复制或者赋值操作;

ofstream out1,out2;

out1=out2;//error

由两层特别重要的含义:

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

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

对IO对象的读写会改变流对象的状态,因此引用必须是非const类型;

下面的代码为何没有输出???

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{std::ofstream out1,out2;out1 << "Today is saturday@!!!" << endl;out2 << "You are very good!!!"  << endl;int i =2;out1 << i << endl;return 0;
}

下面用指针传递流对象:

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
ostream  * print(ostream  *os);
int main()
{print(&cout);out1 << i << endl;return 0;
}
//if you will return or pass or return a stream object ,you will use
//references or pointer
ostream * print(ostream * os)
{(*os) << "This is a ostream object!!!"  << endl;return os;
}

总结:传递流对象可以使用指针。和普通指针一样使用方法!

IO对象不可以复制或者赋值相关推荐

  1. C++基础 - IO对象(流对象)状态,置位与复位

    IO对象(流对象)不能拷贝和赋值,只能以引用的方式传递和返回 // IO对象(流对象)不能拷贝和赋值,只能以引用的方式传递和返回ofstream out1, out2;out1 = out2; // ...

  2. Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值

    1. Numpy 相关知识 1.1 Ndarray 对象 在了解 OpenCV 的图像对象之前我们先对 NumPy 的基础知识做一回顾,方便我们后续更进一步理解图像对象的一系列操作. In [2]: ...

  3. java学习-BeanUtils给对象的属性赋值

    需要加入两个jar包: commons-beanutils-1.9.3.jar commons-logging-1.2.jar 使用方法: 给对象的属性赋值:BeanUtils.setProperty ...

  4. C++ 对象间的赋值与拷贝构造函数

    1.对象间的赋值 /***A.h文件***/ #pragma once class A { public:int va;A(void);A(char* name);A(const A& a); ...

  5. Spring初使用:使用Spring为对象的属性赋值

    目录 为基本类型(及其包装类)属性赋值 通过xml配置文件的方式 使用Set方法赋值 使用有参构造方法赋值 通过注解的方式 使用 @Value 注解赋值 为引用类型属性赋值 指定赋值 使用Set方法赋 ...

  6. js对象的直接赋值、浅拷贝与深拷贝

    最近Vue项目中写到一个业务,就是需要把对话框的表单中的数据,每次点击提交之后,就存进一个el-table表格中,待多次需要的表单数据都提交进表格之后,再将这个表格提交,实现多个表单数据的同时提交,期 ...

  7. ES6中的对象解构赋值

    解构赋值: 解构赋值语法是一个Javascript表达式,这使得可以将数据从数组或对象提取到不同的变量中(这段话是mdn中关于解构赋值的定义,注意这里的定义,可以看出解构主要用在数组和对象上). 说白 ...

  8. springboot如何将一个对象的所有属性赋值到另外一个对象上,属性名需要相同

    springboot如何将一个对象的所有属性赋值到另外一个对象上,属性名需要相同 BeanUtils.copyProperties(源对象, 目标对象); 我们使用spring boot自带的工具类即 ...

  9. 对象属性结构赋值_(六)面向对象-下

    (六)面向对象-下 关键字:static static 可以用来修饰的结构:主要用来修饰类的内部结构 属性.方法.代码块.内部类 static修饰属性:静态变量(类变量 属性,是否使用static修饰 ...

最新文章

  1. elementui表格复制_Element-UI中关于table表格的那些骚操作
  2. 中达变频器参数_台达变频器:满足未来驱动需求
  3. 使用 Edit + MASM 5.0 编译器 + Linker 连接器
  4. 弹性盒模型--新版与旧版比较(1)
  5. Postgres和Oracle与Hibernate的兼容性
  6. python在浏览器运行一片空白_Webdriver启动Firefox浏览器后,页面显示空白
  7. 设计模式的C语言应用-观察者模式-第四章
  8. 设计模式学习---(1)简介
  9. 阿拉伯数字转换成中文大写
  10. wxpython textctrl_如何从wxpython中的textctrl接受值
  11. 简单入门Buffer
  12. iOS 很酷的动画效果
  13. 互联网行业概括,让我们熟悉和了解未来的工作环境
  14. 项目管理软件-禅道-内网部署
  15. 怎么把度分秒化成小数_度分秒转换成小数
  16. 埃氏筛_四种形式 ( pass even , bool , char , differently judge )
  17. 命令与征服:红色警戒3 解决游戏启动时界面黑屏,但右上角有五角星电脑卡死的问题——hosts
  18. 如何解决电脑任务栏无故不见了的问题 ?
  19. 朋友圈加粗字体数字_报名 | 零基础入门brush lettering英文花式字体
  20. 【思前享后】区块链的起源

热门文章

  1. 8张图告诉你如何运营微信公众号
  2. CSS cursor 属性
  3. Linux引导过程详解
  4. switch 根据键盘录入成绩 显示分数及判断等级(第二次)
  5. 牛客网(剑指offer) 第十六题 合并两个排序的链表
  6. 命令获取计算机信息,教你怎么在windows上用命令查看系统信息
  7. [Python人工智能] 五.theano实现神经网络正规化Regularization处理
  8. Swift之深入解析Key Paths的功能与应用
  9. iOS之深入解析如何构建动态库与framework动态更新
  10. RxSwift之环境的搭建配置与基础控件的使用