缘起

#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;int main()
{ofstream fs;          //输出文件流  (正确)ostringstream os;     //输出string流(正确)ostream o;            //输出普通流   (错误)
}

解惑

头文件iostream定义了三个类iostream, istream, ostream(三个普通流), 都存在这样的问题:不可以直接定义无参数的对象。原因可以从编译器提示看出

类中无参数的构造函数定义为protected,因此不可直接定义。

为何这么设计

iostream头文件定义读写控制窗口的类型,c++是跨平台的语言,不同的系统窗口操作是不同的,用户自己定义有些费劲,于是c++干脆定义了标准的输入对象cin,标准的输出对象cout。反正只是与窗口交互自己再去定义输入输出对象也没那必要。

非得自己定义一个iostream对象可以吗?

可以,有有参数的构造函数,两个例子

#ostream对象

#include <iostream>
#include <fstream>
int main () {std::filebuf fb;fb.open ("test.txt",std::ios::out);std::ostream os(&fb); os << "Test sentence\n";fb.close();return 0;
}

#istream对象

#include <iostream>
#include <fstream>
int main () {std::filebuf fb;if (fb.open ("test.txt",std::ios::in)){std::istream is(&fb); while (is)std::cout << char(is.get());fb.close();}return 0;
}

  

转载于:https://www.cnblogs.com/kaituorensheng/p/3462254.html

【c++】iostreeam中的类为何不可以直接定义一个无参对象呢相关推荐

  1. java 设计一个Dog类,有三个属性:名字,年龄和颜色,有一个方法输出叫声“汪汪”。设计要求:定义属性和方法定义一个无参构造方法和一个三参构造方法。另外写一个主类,在main里面使用三参构造方

    public class dog {     String name="啊啊";     String color="白";     int age=1;   ...

  2. java中构造方法的理解,super()与构造方法,无参,有参构造方法,this()与构造方法。

    一.为什么要引入构造方法. 当创建对象的时候需要对属性值初始化,构造方法,即对象创建时要执行的方法. 要求在实例化的同时,就指定好name,和age的值.这就要用到构造方法.又叫做构造器Constru ...

  3. java中构造方法的理解,super()与构造方法,无参,有参构造方法,this()与构造方法

    一.为什么要引入构造方法. 当创建对象的时候需要对属性值初始化,构造方法,即对象创建时要执行的方法. 要求在实例化的同时,就指定好name,和age的值.这就要用到构造方法.又叫做构造器Constru ...

  4. 类的成员变量 请定义一个交通工具(Vehicle)的类其中有: 属性速度(speed)体积(size)等等 方法移动(move())设置速度(setSpeed(int speed))加速speed

    /*类的成员变量 请定义一个交通工具(Vehicle)的类其中有:属性速度(speed)体积(size)等等 方法移动(move())设置速度(setSpeed(int speed))加速speedU ...

  5. python:掌握类的基本方法。定义一个Circle类,根据圆的半径求周长和面积。 再由Circle类创建2个圆对象,其半径分别为5和10,要求输出各自的周长和面积

    掌握类的基本方法.定义一个Circle类,根据圆的半径求周长和面积. 再由Circle类创建2个圆对象,其半径分别为5和10,要求输出各自的周长和面积 请在[python数据分析之禅]gzh后台,回复 ...

  6. java定义一个圆类_2.8.1 如何定义一个圆的类

    2.8  绝知此事要躬行--自己动手定义对象 在本章***一小节中不再给大家介绍更多新的知识,只是通过一个较为全面的实例把前面介绍的内容再复述一遍,好让大家加深一下印象,更深刻地理解一下Java的面向 ...

  7. python定义一个类描述数字时钟_定义一个时间类Time,能提供和设置由时、分、秒组成的时间,编写出应用程序,定义时间对象t...

    展开全部 [基本题]定义一个时间类,提供设定时间.显示时间和秒数增加e68a8432313133353236313431303231363533313334336361371的功能,其中设定时间的方法 ...

  8. Java中Person类型赋值_Java设计:定义一个Person类和它的子类Employee。Person类有姓名、地址、电话号码和电子邮箱,...

    匿名用户 1级 2017-04-26 回答 Person类: public class Person { private String address; private String name; pr ...

  9. 初学者-python中自定义类的已有self定义,后面使用出现object has no attribute问题

    修改别人python代码,会遇到在类的init中已定义self,但后面使用还是找不到定义的self.*,其中一个原因是init中self定义顺序的问题,比如:如下为正确的 class LSTM(obj ...

最新文章

  1. pytorch手写数字识别验证四流网络
  2. python语言自学教程-3D图示Python标准自学教程入门篇
  3. linux通过字符串查看,linux命令strings有什么用?查找二进制文件可打印字符串。...
  4. ciscodk新科目——1Z1-807
  5. python脚本自动消除安卓版_python脚本中appium的自启动自关闭
  6. 理解 LruCache 机制
  7. 风变编程python第一关_风变编程【学习笔记】,第8关学习心得及代码扩展
  8. Python安装cv2库出错及解决:Could not find a version that satisfies the requirement cv2
  9. c++ 应输入表达式_【C语言编程入门系列】—— 第五章,C语言基本运算和表达式(一)...
  10. 视频教程-ThinkPHP5.0项目实战-PHP
  11. c语言流水灯循环左移程序,51单片机流水灯左移 右移控制程序
  12. 剩余电流互感器互感电流放大转真有效值
  13. c语言转换说明符总结(%d,%i,%u,%f,%o,%x,%X,%p,%s,%g,%e)
  14. J2EE进阶之自定义标签,JSTL标签,国际化 十四
  15. 那些在一个公司死磕了5-10年的人,最后都怎么样了?
  16. 玩转Qml(12)-再谈动态国际化
  17. Python-OpenCV 实现美图秀秀视频剪辑效果【转场】
  18. 活动时长计算尝试用Lambada 实现责任链的代码优化
  19. visto VTL搭建
  20. 第一部分 思科九年 一(2)

热门文章

  1. 打造属于自己的图文符号库
  2. 项目总设计师应做好设计控制
  3. [转]open channel SSD FTL
  4. django的模板系统
  5. Linux退出vi编辑
  6. 编译pqxx源码configure时遇到codecs.py LookupError的解决方法
  7. 20162303 结对编程-四则运算(挑战出题)
  8. Webform(Linq高级查、分页、组合查询)
  9. iosanimationWithKeyPath
  10. HTML5 javascript修改canvas的大小