- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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; } // 返回
您可能关注的文档
- scifinder网页版使用说明重点.ppt
- SciVerseScienceDirect数据库介绍重点.ppt
- SCR催化剂(脱销钛白粉)实用总结分析.ppt
- SD8000--基础重点.ppt
- SDC系列智能型除湿装置说明书重点.doc
- IBEACON移动书店项目重点.ppt
- IBT听力---lecture词汇重点.doc
- seafoodknown重点.doc
- IB自选模块第二章第二节重点.ppt
- ICD-10各章节思考题分析.doc
- 注册验船师高频真题题库2025.docx
- 注册验船师高频题库带解析2025.docx
- 注册验船师考试必备资料2025.docx
- 注册验船师精选题库带分析2025.docx
- 注册验船师考前冲刺必刷题附答案2025.docx
- 新高考生物二轮复习讲练测第10讲 人体的稳态与免疫调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第7讲 遗传的基本规律与伴性遗传(检测)(原卷版) .docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(检测)(原卷版).docx
文档评论(0)