CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  其它技术问题

看书时看不懂

楼主Cform(Jieyi)2005-05-16 14:05:04 在 C/C++ / 其它技术问题 提问

21.4.6.1带参数的操控符  
  cout<<   setprecision(4)<<angle,要不用4位angle为完成此事setprecison必须  
  返回一个用4初始化过的对象。在它被子调用时就能去调用cout。precision(4)。  
  这样的操控符是一个函数对象,它们被子<<(而不是通过()调用),  
  这个函数对象有可能象下历这样定义。  
  struct   smanip{  
              ios_base&   (*f)(ios_base&,int),int);//要调用的函数  
              int   i,  
              smanip   (ios_bse&   (*ff)(ios_base&,int),(int)):f(ff),i(ii){}  
                      };  
  template<class   Ch,   class   Tr>  
  ostream<Ch,Tr>   &   operator<<(ostream<Ch,Tr>&os,const   smanip&   m)  
  {  
      return   m.f(os,m.i);  
  }  
   
   
  smanip   的构造函数将存在于f和i中,operator<<调用f(i),现在我们就可以用  
  以下方式定义setprecision()了,  
  ios_base&   set_precision(ios_base&   s,int   n)//协会助函数  
  {return   s.precision(n);//调用成员函数}  
  inline   smanip   setprecison(int   n)  
  {return   smanip(set_precison,n)//创建函数对象  
  我们现在就可以写cout<<setprecison(4)<<angle了。  
   
   
  我不太明白当setprecison(4)被调用时,4传给了smanip中的构造函数,  
  可是,不知道是怎么传给了(*ff)(ios_base&,int)里的int??  
  另外,是不是调用smanip时,这会从非const转为const?  
  问题点数:50、回复次数:7Top

1 楼fibbery(飞)(睡足了才能提高效率)回复于 2005-05-16 14:09:40 得分 0

是C++Top

2 楼jingyueid(干宁)回复于 2005-05-17 19:00:38 得分 50

cout<<setprecison(4)<<angle  
  在执行的时候。<<被解析为:  
  ostream<Ch,Tr>   &   operator<<(ostream<Ch,Tr>&os,const   smanip&   m)  
  {  
      return   m.f(os,m.i);  
  }  
   
  执行return   m.f(os,   m.i)操作;  
   
  smanip首先给构造为:  
  smanip   (ios_bse&   (*ff)(ios_base&,int),(int)):f(ff),i(ii){}  
  注意,那个整数传给了i,函数指针给了f。  
   
  smanip被传参进来后,执行代码:  
  m.f(os,   m.i),就是在执行:set_precison(os,   m.i)Top

3 楼zjlang(阿亮)回复于 2005-05-18 17:17:23 得分 0

UPTop

4 楼Cform(Jieyi)回复于 2005-06-05 18:56:13 得分 0

那么  
  ostream     <Ch,Tr     >     &     operator     <     <(ostream     <Ch,Tr     >&os,const     smanip&     m)      
  {      
        return     m.f(os,m.i);      
  }      
  是不是在参数smanip   &m时会构造该类Top

5 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-05 19:30:15 得分 0

markTop

6 楼kyokyxxj(朝阳)回复于 2005-06-05 20:50:08 得分 0

看不懂。。帮你顶下Top

7 楼songjuan10()回复于 2005-07-08 20:20:52 得分 0

努力吧!Top

相关问题

  • 看书中不懂的!
  • 看不懂书上的例题!!!
  • 晚上看书的时候
  • 看书的时候有个地方不懂:instanceof的用法,以及它的概念。不要写英文呀:)
  • 学c++看那书好????推荐一下tinking c++看不懂
  • 看数据结构的书怎么一点都看不懂
  • C++中的volatile做什么用的?(看书没看懂)
  • 看书不太懂,虚拟内存的问题
  • 再一本图像书里看到的,不懂
  • 书上代码没看懂,望高手解答?

关键词

  • operator

得分解答快速导航

  • 帖主:Cform
  • jingyueid

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo