- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3-基于对象及程序设计
基于对象的程序设计 雷小锋leiyunhui@ 内容纲要 一、基于对象的程序设计概述 二、类和对象 三、重载操作符 四、类模板 五、数组和指针 三、重载操作符 类抽象地描述一类对象所共有的、本质的属性和行为,对象是类的实例化。 C++的内置数据类型也是类 三、重载操作符 三、重载操作符 操作符重载是特殊的函数重载 称为操作符重载函数,通常将其定义为类的成员函数 操作符重载函数的语法: 三、重载操作符 【举例】复数的+操作符重载 三、重载操作符 【举例】复数类的复数运算符重载 +、 =、 +=、abs、*、/ 三、重载操作符—引用型参数 三、重载操作符—引用型参数 回顾变量及其引用 变量:变量的值/右值、变量的地址/左值 引用型变量:被引用对象的别名,对引用的操作实在的施加到被引用对象上。 Complex c1(1,2); Complex rc = c1; 三、重载操作符—引用型参数 三、重载操作符—引用型参数 const引用说明 指示被引用的对象是不可修改的。若不慎对被引用对象进行了修改操作,C++编译器会提示出错; 可以引用不可寻址的值(包括字面常量); 三、重载操作符—引用型参数 const语法和语义详解 1. 用来说明常变量(符号常量) 符号常量可寻址,但不可改变; 三、重载操作符—引用型参数 const语法和语义详解 2. const修饰指针和引用 三、重载操作符—引用型参数 三、重载操作符—引用型参数 【举例】复数类的复数运算符重载 重载:+、 =、 +=、abs、*、/ 注意观察引用型参数、const修饰 三、重载操作符—小结 操作符重载的本质是函数重载 操作符重载函数 通常定义为类的成员函数 函数名:operator操作符 函数参数: 双目操作符:重载函数参数为一个 单目操作符:没有重载函数参数 操作符的左操作数一定是对象,若有右操作数则是该函数的参数 三、重载操作符—小结 运算符“++”和“--”存在前置与后置问题。 三、重载操作符—小结 不是所有的操作符都能够重载 三、重载操作符—友元函数 目前为止,复数类一切都完美了吗? (4.1) friend函数 回顾复数类的+运算符重载 (4.1) friend函数 答案:会出错。 dval + c1会被编译为dval.operator+(c1) 但dval作为double型没有参数为Complex的+操作符重载函数,编译出错。 (4.1) friend函数 解决办法:friend函数 又称友元函数 (4.1) friend函数 友元函数:与普通函数类似 但友元函数是某个类的朋友,可以任意访问该类的任何成员 (4.1) friend函数 (4.1) friend函数 +运算符的完整重载 (4.1) friend函数 +运算符的完整重载 (4.1) friend函数 (4.1) friend函数 【举例】复数类的复数运算符重载 重载:+、 =、 +=、abs、*、/ 观察1:友元函数的使用 观察2:引用型参数和返回值 观察3:拷贝赋值运算符=只能作为成员函数来重载,不为友元函数,因为存在默认的拷贝赋值运算符。 (4.1) friend函数—友元类 友元破坏数据封装和数据隐藏的机制,建议尽量不使用或少使用友元。 友元机制包括:友元函数和友元类 友元类: 声明语法:用friend修饰友元类名; 若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。 class A{ //B是A的友元类 friend class B; public: void Display() {coutxendl;} private: int x; } 重载操作符—总结 操作符重载的本质是函数重载 操作符重载函数 通常定义为类的成员函数 也可以实现为类的友元函数,且有时候只能实现为友元函数 友元类 作业:实现几何中的向量类及其运算 class Complex {…… friend Complex operator+(Complex , Complex ) ; }; //opration+声明为类Complex类的友元函数, 简化:只需复数与复数相加足矣,实数也是复数嘛 前提:存在构造函数,可以将实数强制转换为虚部为0的复数。 Complex(double r=0.0, double i=0.0) { real=r; image=i; }//构造函数 dval+c1 会被C++编译器解释为: operator+(Complex(dval), c1) //OK complex c1(1.2, 1.4), c2(2, -1.0); double dval = 0.5; c3 = c1 + dval;
文档评论(0)