网站大量收购独家精品文档,联系QQ:2885784924

C++ch4-运算符重载-4学时重点.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
运算符重载——可重载的运算符 可以重载的运算符 + - * / % ^ | ~ ! = += -= *= /= % ^= = |= = = == != = = || ++ -- -* ‘ - [] () new delete new[] delete[] 运算符重载— 不可重载的运算符 间接引用符 operator. 和operator- 指向成员的指针 operator.* 多重指针 operator** 运算符重载— 重载限定 重载运算符函数可以对运算符作出新的解释,但原有基本语义不变: 不改变运算符的优先级 不改变运算符的结合性 不改变运算符所需要的操作数 不能创建新的运算符 MyType b; MyType a = b; //copy-constructor a = b; //MyType::operator= 复制构造函数:产生新的对象 赋值运算符重载:左侧对象已存在,通过赋值改变其内容。 运算符重载— 赋值运算符 赋值运算符重载( operator=) 必须将类型中所有重要的内容由运算符右侧对象复制到当前对象中。 运算符重载— 赋值运算符 #includeiostream using namespace std; class Value { int a, b; public: Value(int aa = 0, int bb = 0): a(aa), b(bb) {} Value operator=(const Value rv) { a = rv.a; b = rv.b; return *this; } void print() { cout a:= a endl; cout“b:= b endl; } }; void main() { Value x, y(1, 2); x.print(); y.print(); x = y; x.print(); } Value.cpp 4.2.3 运算符重载为普通函数 可以将运算符重载为普通函数,这时参数表中的参数个数与操作数个相等,并且第一个操作数的类型不要求是用户自定义类。 下面是运算符重载为普通函数的一般形式: 返回值类型 operator运算符(形参表); 由于是普通函数,因此在函数原型前不应加上关键字friend。 用普通函数重载单目运算符 将单目运算符重载为普通函数时,函数形参表中有一个参数作为该运算符的操作数。 例4.7 单目运算符重载为类的普通函数示例。 // 声明整型类 class Integer { private: // 数据成员 int num; // 数据值 public: // 公有函数 Integer(int n = 0): num(n){ } // 构造函数 void Set(int n) { num = n; } // 设置数据值 int Get() const { return num; } // 返回数据值 }; Integer operator-(const Integer a) // 重载负号运算符- { return Integer(-a.Get()); }; int main() // 主函数main() { Integer i; // 定义整型对象 i.Set(6); // 设置数据值 cout i.Get() endl; // 输出数据值6 i = -i; // 对i进行求负号运算, -i等价于operator-(i); cout i.Get() endl; // 输出数据值-6 system(PAUSE); // 输出系统提示信息 return 0; // 返回值0, 返回操作系统 } 用普通函数重载重载双目运算符 将双目运算符重载为普通函数时,函数形参表中包含有两个参数,这两个参数分别作为运算符的左、右操作数。 例4.8 双目运算符重载为普通函数示例。 // 声明整型类 class Integer { private: // 数据成员 int num; // 数据值 public: // 公有函数 Integer(int n = 0): num(n){ } // 构造函数 void Set(int n) { num = n; } // 设置数据值 int Get() const { return num; } // 返回

文档评论(0)

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

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

1亿VIP精品文档

相关文档