重载运算符的作用域

bsnry 2012-03-05 10:00:31

问题:运算符的作用域问题


以下是一个 测试代码,重载了<<, <

输出打印Test类的时候, 编译器是根据什么规则去调用 重载的bool operator<<函数???

Test中的<<只是个局部的重载, 为什么只是局部的重载?

operator<< 尽管在类中实现,但是它所在的作用域和类Test没有关系额, 和一个普通的 函数fun的作用域一样啊??





void fun()
{
cout<<"heloo"<<endl;
}


class Test
{
int a;
float b;
public:
Test(int i_a, float f_b):a(i_a),b(f_b){}
friend bool operator<(Test const & obj1, Test const& obj2)
{
return obj1.a<obj2.a;
}
friend ostream& operator<<(ostream& o, Test const& obj)
{
o<<obj.a<<" "<<obj.b<<endl;
return o;
}
};






问题2: 如何实现全局的重载,谁给个代码??
...全文
242 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小迷 2012-03-06
  • 打赏
  • 举报
回复
friend函数,不就是全局函数,不懂LZ怎么想的
程序员小迷 2012-03-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bsnry 的回复:]

2楼,这是全局的重载的话,那么4楼无视之


有没有能 实现 重载new的例子啊




引用 2 楼 cxsjabcabc 的回复:

局部的重载 是什么意思?
Test类里重载 << 运算符,这就是全局重载了。。
[/Quote]

代码不是可以:
cout << obj;

这为什么不是全局的重载呢?
bsnry 2012-03-05
  • 打赏
  • 举报
回复
2楼,这是全局的重载的话,那么4楼无视之


有没有能 实现 重载new的例子啊




[Quote=引用 2 楼 cxsjabcabc 的回复:]

局部的重载 是什么意思?
Test类里重载 << 运算符,这就是全局重载了。。
[/Quote]
bsnry 2012-03-05
  • 打赏
  • 举报
回复
如何实现全局的重载,谁给个代码??
程序员小迷 2012-03-05
  • 打赏
  • 举报
回复
局部重载 << 表示输出功能,这是个很神奇的功能。
程序员小迷 2012-03-05
  • 打赏
  • 举报
回复
局部的重载 是什么意思?
Test类里重载 << 运算符,这就是全局重载了。。
xiyoulaoyuanjia 2012-03-05
  • 打赏
  • 举报
回复
在类中定义的局部的重载 例如<<, < 调用时其它的左边必须是类的对象,而右边必须是其相应的参数类型!
而定义的全局重载则没有这个限制!

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧