- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计 C++ 运算符重载 (7.4) 运算符重载 (7.4.1) 哪些运算符可重载 (7.4.2) 1.() [] - 赋值运算符(如= += -= 等)转换运算符 的重载函数必须是成员函数。 2.成员运算符函数:左操作数必须是对象(或其引用)。如左操作数必须是一个不同类的对象或内部类型(如int)对象,运算符函数必须是非成员函数实现。 3.非成员运算符函数往往使用友元函数实现。 运算符重载 ——成员函数 (7.4.3) 运算符重载 ——成员函数 (7.4.3) char x = s[0]; // operator [] s[1] = ‘a; // hello -- hallo s[2] = s[3] = L; // hallo -- haLLo const vs non-const String s3 = s1 + s2 String s1 = hello ; String s2 = C++; String s3 = s1 + s2; // s3 == hello C++ String s3 = s1 + s2 s3 = s1 + s2; // s3 = s1.operator+(s2); String String::operator+ (const String ss) const; 友元 (5.2) C++控制对类对象私有部分的访问。通常,公有类方法是唯一的访问途径。 但有时为了编程方便,提供了另外一种形式的访问权限:友元。 友元函数:具有与类成员函数相同的访问权限。 友元类 友元成员函数 友元函数 (5.2.2) 友元函数是: 可以直接访问类的私有成员的非成员函数 它是定义在类外的普通函数 它不属于类,但需要在类的定义中加以声明 声明时只需在友元的名称前加上关键字 friend,其格式如下: friend? ReturnType ?functionName(Parameters); 友元函数的声明可放在类的任何部分,没有区别。 一个函数可以是多个类的友元函数,但需在各类中分别声明。 友元函数的调用与一般函数的调用方式和原理一致 class?Point { ?private: ??????float?x?; ??????.... ??????friend?float?distance(Point?p1,Point?p2); ?} // 友元函数的定义 //与类的成员函数不同,没有类Point::限定符 float?distance(Point?p1, Point?p2) {?????return?p1.x?+?p2.x?; } 运算符重载 —— 友元函数 (7.4.4) String s3 = const char *.. + s2 String - 合理的操作符重载 = [] + 字符串比较:== = = != if (s1 == s2) ...; if (comp01 == clazz) ...; if (s hello c++) ...; 输入输出: cout s1 s2 endl; cin s; 增量运算符重载 (7.4.5) #include iostream class Integer { public: Integer(int x) { value_ = x; } Integer operator ++( ); //前置增量运算符 Integer operator++(int); //后置增量运算符 inline int value() const { return value_; } private: int value_; }; Integer Integer:: operator ++( ) { //y = ++x value++; return *this; //返回原对象 } Integer Integer:: operator ++(int) { //y = x++; Integer temp(value); //临时对象保存原对象值 value++; //对象增量修改 return temp; //返回临时对象的copy } int main( ) { Integer a(20), b, c; b = a++; c = ++a; cout a.value() b.value() c.value() endl; return 0; } #输入和输出运算符重载 支持输出运算符 和输入运算符 ,应该和标准库iostream的接口相同。 cout s1
您可能关注的文档
最近下载
- 2025年自考本科《马原》考试复习题库资料(含答案).pdf VIP
- ISO 9606-1-2012(中文)焊工资质考试—熔焊—第一部分:钢 第二版2012‐07‐15.pdf VIP
- 高一英语必背知识点归纳.doc VIP
- 《赌经》原文及译文“草堂居士着”.doc
- (推荐)07j306排水沟图集.pdf VIP
- 汽油安全技术说明书(MSDS).pdf VIP
- 城市轨道交通概论:城市轨道交通车站机电设备PPT教学课件.pptx
- 2020-2021某大学《药剂学》期末课程考试试卷合集(含答案).pdf VIP
- T_CATAGS 78—2024__境内始发客运航班一次性不可降解__塑料制品替代规范.pdf VIP
- 高考化学--物质的量浓度.pptx VIP
文档评论(0)