C++的算符重载

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

class Array { 

 public: 

int& operator[] (unsigned i); 

}; 

inline 

int& Array::operator[] (unsigned i) 

{   // ... 



  有些人不喜欢operator关键字或类体内的有些古怪的语法。但是算符重载语法不是被期望用来使得类的开发者的工作更简易。它被期望用来使得类的用户的工作更简易:   

int main() 



 Array a; 

 a[3] = 4; // 用户代码应该明显而且易懂... 



  记住:在一个面向重用的世界中,使用你的类的人有很多,而建造它的人只有一个(你自己);因此你做任何事都应该照顾多数而不是少数。 

  什么算符能/不能被重载?大多数都可以被重载。C的算符中只有 . 和 ? :(以及sizeof,技术上可以看作一个算符)。C++增加了一些自己的算符,除了::和.*,大多数都可以被重载。 这是一个下标算符的示例(它返回一个引用)。先没有算符重载: 

class Array { 

public: 

int& elem(unsigned i) {  if (i > 99) error(); return data[i]; } 

 private: 

 int data[100]; 

}; 

int main() 



 Array a; 

 a.elem(10) = 42; 

 a.elem(12) += a.elem(13); 



  现在用算符重载给出同样的逻辑: 

class Array { 

public: 

int& operator[] (unsigned i)  {  if (i > 99) error(); return data[i]; } 

 private: 

 int data[100]; 
分页:上一页  1 [2] 3 4 5 6 7 8 9  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有