[工学]第十章运算符重载.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第十章运算符重载

* * * * * * class weight { public: weight(int v=0):value(v) {} //运算符前置自增 weight operator ++(); //运算符后置自增 weight operator ++(int); void print() { coutvalueendl; } private: int value; }; //前增量 weight weight::operator ++() { value++; return *this; } //后增量 weight weight::operator ++(int) { weight temp(*this); //操作数保存为临时对象 value++; //操作数加1 return temp; //返回没有加1的临时对象 } void main() { weight s1(1),s2; s1.print(); s2=s1++; s2.print(); s1.print(); (++s1).print(); } 1 1 2 3 说明 因为重载函数只能从形式参数上加以区别。 1、运算符前置自增运算符 用成员函数实现时,没有形式参数。 2、运算符后置自增运算符 另外增加一个形式上的形式参数,类型定为int。这个参数只是用来区别两种自增算符,并不参加实际的运算。 简单练习 创建Piont类,有数据成员X和Y,重载++和--,要求同时重载前缀方式和后缀方式。 练习 创建一个功能更强大的类似数组类Array(先考虑类似存放int的数组类),它能够进行范围检查,从而能确保数组下标保持在有效范围内。这个类允许通过=运算符将一个数组类对象赋给另一个对象。而且可以用==和!=进行比较。 class Array { public: Array( int = 10 ); Array( const Array ); ~Array(); int getSize() const; const Array operator=( const Array ); bool operator==( const Array ) const; bool operator!=( const Array right ) const { return ! ( *this == right ); } int operator[]( int ); int operator[]( int ) const; private: int size; int *ptr; }; 运算符重载为友元函数形式 运算符重载函数可以定义为友元函数的形式,格式如下: 返回值类型 operator op (参数表) { 相对于该类而定义的操作(运算符重载函数体) } 单目运算符重载,参数表中只有一个形参数; 双目运算符重载,参数表中有两个形参数。 运算符重载为成员函数和友元函数形式的主要区别在于前者有this 指针,后者无this 指针。 运算符重载为友元函数形式 注意:友元函数重载运算符调用方式 @表示要重载的运算符 二元运算符 显示:operator@(对象名1,对象名2) 隐式:对象名1@对象名2 一元运算符 显示:operator@(对象名) 隐式:@对象名 或者 对象名@ 运算符重载为友元函数形式 说明: 重载为友元函数,比如“+”,操作数都由形参给出,通过运算符重载的函数进行传递。并且运算结果的类型与操作数的类型一致。 重载运算符的操作中,无论重载为成员函数还是友元函数,其形参多为引用类型,目的是增加可读性,提高程序的运行效率,因为使用引用类型,在进行参数传递的过程中,不需要复制临时对象。 #include iostream using namespace std; class String {public: String( ){p=NULL;} String(char *str); friend bool operator(String string1,String stri

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档