| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 738 人关注过本帖
标题:关于 cout.operator<<("hi");
只看楼主 加入收藏
gz81
Rank: 5Rank: 5
等 级:职业侠客
帖 子:137
专家分:369
注 册:2008-5-1
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:1 
关于 cout.operator<<("hi");
int main()
{
cout.operator<<("hi");

return 0;
}

输出的结果是:0x442000 而不是 hi

就是说,cout.operator<<("hi");跟cout<<"hi"; 不是完全等价的,有谁可以解释一下这是为什么?
搜索更多相关主题的帖子: operator cout 
2009-07-27 11:40
gz81
Rank: 5Rank: 5
等 级:职业侠客
帖 子:137
专家分:369
注 册:2008-5-1
收藏
得分:0 
网上搜索到的答案:

cout<<"Some   test\n";   
  调用的是全局的操作符重载ostream&   operator<<(ostream&   os,   char*   str);   
   
  cout.operator<<("Some   test\n");   
  调用的是cout对象的操作符重载ostream&   ostream:perator<<(char*   str);   
   
  从设计者角度看,在设计ostream类的时候,不可能知道所有使用ostream类输出的类型,   
  因此,一个类不应要求ostream类提供用于输出的<<重载。   
  当你设计了一个新的类时,你不能修改ostream的定义,使它支持你的新类,   
  你只能提供一个全局的操作符<<的重载,来支持你的类。   
  所以用于C风格的字符输出的<<操作符是一个全局的<<重载,   
  而不是ostream提供的成员重载函数,楼主程序中的两行是分别调用了两个不同的函数。

我的空间:http://student./space.php?uid=116706
2009-07-27 20:12
快速回复:关于 cout.operator<<("hi");
数据加载中...
 
   



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

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