C++的算符重载

发布时间:2006-06-28 05:25     点击:
分页:[1] 2 3 4 5 6 7 8 9  下一页

  算符重载的作用是什么?它允许你为类的用户提供一个直觉的接口。 算符重载允许C/C++的运算符在用户定义类型(类)上拥有一个用户定义的意义。重载的算符是函数调用的语法修饰:   

class Fred { 

 public:    // ... 

}; 

#if 0           // 没有算符重载: 

Fred add(Fred, Fred); 

Fred mul(Fred, Fred); 

Fred f(Fred a, Fred b, Fred c) 



 return add(add(mul(a,b), mul(b,c)), mul(c,a)); // 哈哈,多可笑... 



#else   // 有算符重载: 

Fred operator+ (Fred, Fred); 

Fred operator* (Fred, Fred); 

Fred f(Fred a, Fred b, Fred c) 



 return a*b + b*c + c*a; 



#endif 

 

  算符重载的好处是什么? 

  通过重载类上的标准算符,你可以发掘类的用户的直觉。使得用户程序所用的语言是面向问题的,而不是面向机器的。 最终目标是降低学习曲线并减少错误率。 

 

  有什么算符重载的实例?这里有一些算符重载的实例: 

myString + yourString 可以连接两个 std::string 对象 

myDate++ 可以增加一个 Date 对象 

a * b 可以将两个 Number 对象相乘 

a[i] 可以访问 Array 对象的某个元素 

x = *p 可以反引用一个实际“指向”一个磁盘记录的 "smart pointer" —— 它实际上在磁盘上定位到 p 所指向的记录并返回给x。 

  但是算符重载使得我的类很丑陋;难道它不是应该使我的类更清晰吗?算符重载使得类的用户的工作更简易,而不是为类的开发者服务的! 考虑一下如下的例子: 
分页:[1] 2 3 4 5 6 7 8 9  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有