- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录;8.1 多态性概述;8.1.1 多态的类型;8.1.2 多态的实现;8.1.2 多态的实现;8.2 运算符重载;8.2.1 运算符重载的规则;8.2.1 运算符重载的规则;8.2.1 运算符重载的规则;8.2.2 运算符重载为成员函数;8.2.2 运算符重载为成员函数;例8-1复数类加减法运算重载—成员函数形式;例8-1(续);例8-1(续);例8-1(续);程序输出的结果为:
c1 = (5, 4)
c2 = (2, 10)
c3 = c1 - c2 = (3, -6)
c3 = c1 + c2 = (7, 14)
复数加减法运算重载为复数类的成员函数,除了函数声明及实现的时候使用关键字operator之外,运算符重载函数与类的普通成员函数没有区别;
可以直接通过运算符、操作数的方式来完成函数调用,运算符“+”、“-”原来的功能都不变,同时添加了新的针对复数运算的功能;
“+”、“-”运算符作用于不同的对象上会导致完全不同的操作行为,具有了更广泛的多态特征。;重载的“+”、“-”函数中都是创建一个临时的无名对象作为返回值:
return Complex(real + c2.real, imag + c2.imag);
调用Complex构造函数创建一个临时对象并返回它。
也可以按如下形式返回函数值:
Complex Complex::operator + (const Complex c2) const{ //重载运算符函数实现
Complex c(real+c2.real, img+c2.img);
return c;
}
;运算符成员函数的设计;运算符成员函数的设计(续);例8-2 单目运算符“++”重载为成员函数形式 ;#include iostream
using namespace std;
class Clock { //时钟类定义
public: //外部接口
Clock(int hour = 0, int minute = 0, int second = 0);
void showTime() const;
Clock operator ++ (); //前置单目运算符重载
Clock operator ++ (int); //后置单目运算符重载
private: //私有数据成员
int hour, minute, second;
};
?
Clock::Clock(int hour/* = 0 */, int minute/* = 0 */, int second/* = 0 */) {
if (0 = hour hour 24 0 = minute minute 60
0 = second second 60) {
this-hour = hour;
this-minute = minute;
this-second = second;
} else
cout Time error! endl;
};void Clock::showTime() const { //显示时间函数
cout hour : minute : second endl;
}
?
Clock Clock::operator ++ () { //前置单目运算符重载函数
second++;
if (second = 60) {
second -= 60;
minute++;
if (minute = 60) {
minute -= 60;
hour = (hour + 1) % 24;
}
}
return *this;
}
?
Clock Clock::operator ++ (int) { //后置单目运算符重载
//注意形参表中的整型参数
Clock old = *this;
++(*this); //调用前置“++”运算符
return old;
};int main() {
Clock myClock(23, 59, 59);
cout First time output: ;
myClock.showTime();
cout Show myClock++: ;
(myClock++).showTime();
cout Show ++myClock: ;
(++myClock).showTime();
return 0;
};例8-2(续);8.2.3运算符重载为非成员函数;8.2.3运算符重载为非成员函数(续);8.2.3运算符重载为非成员函数(续);例8-3以非成员函数形式重载Complex的加减法运算和“”运算符;//8_3.cpp
#in
您可能关注的文档
最近下载
- 聚焦数学核心素养 让量感在课堂上有序生长——以“课桌有多长”为例-来源:理科爱好者(教育教学版)(第2022002期)-成都大学.pdf VIP
- 科学家郭永怀个人事迹(7篇).docx
- 医院培训课件:《外周血形态学检验人员能力比对考核体系的建立与应用》.pptx
- 电子商务法律法规考试试题与答案.docx
- 前期物业管理物资清单.doc
- (高清版)BT 9790-2021 金属材料 金属及其他无机覆盖层的维氏和努氏显微硬度试验.pdf VIP
- 关于深入落实电价优惠和公共资源开放加快山东省5G基站建设的通知.pdf
- 最新高中英语教学设计.doc
- 五三天天练二年级语文电子版.docx
- 中等职业学校美术绘画专业人才培养.docx
文档评论(0)