| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1009 人关注过本帖
标题:问一个关于流对象(cout)的很菜的问题
只看楼主 加入收藏
天使帝国
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-28
收藏
 问题点数:0 回复次数:3 
问一个关于流对象(cout)的很菜的问题
不论是看书的时候,还是在网上找相关资料的时候,看上面都说:

cout 是 ostream_withassign 类的对象;
cin 是 istream_withassign 类的对象;

可是在定义类的时候定义:

ostream cout(stdout);

而不是:

ostream_withassign cout(stdout);

并且在声明友运算符重载函数的时候,也是这样声明cout的引用类型的:

ostream & operator << (ostream &,用户自定义类型名 &);

既然在定义和使用cout对象时都是用的ostream这个类,为什么书上和网上资料里又都说:ostream_withassign类是ostream类的派生类,而cout是ostream_withassign类的对象?

如果是这样,为什么不直接用ostream_withassign来定义对象或引用对象呢?
搜索更多相关主题的帖子: cout 对象 
2007-12-11 15:44
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
ostream 由模板类 basic_ostream  实例化得到, cout 为ostream 类的一个对象, 操作符 <<  是在模板类 basic_ostream 中实现的.

操作符 <<  是一个二元操作符, 一般重载的时候需要一个流对象的引用作为参数返回一个流对象的引用, 而模板类在语法上是不允许定义对象的, 更不可能作为引用参数和返回值出现在友元函数的定义中

try new catch
2007-12-11 20:01
天使帝国
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-28
收藏
得分:0 
这个我知道,因为模版类是抽象类,所以不能定义对象

可是我想问 cout  这个对象到底是 ostream 类的对象 ,还是 ostream_withassign 类的对象,按照楼上朋友的解答,我是否可以这样认为:

ios类  ->  basic_ostream类  ->  ostream类  -> ostream_withassign类

关键是我不明白为什么很多地方都说 cout 是ostream_withassign 类的对象,而在实例中定义和使用cout对象的时候却又都说它是属于ostream类的,如果说派生类可以向基类传值,那么在定义cout 时为什么又不直接用ostream_withassign这个类?
2007-12-12 14:14
天使帝国
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-28
收藏
得分:0 
大家帮帮忙,我这里真的是不太明白,有没有知道的朋友能不能给点启发,写的详细些,谢谢大家了,还有谢谢版主了,但是您二楼说的那个我真的是不太明白,能不能说的在详细些?
2007-12-14 09:35
快速回复:问一个关于流对象(cout)的很菜的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016345 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved