- 1
- 0
- 约6.59千字
- 约 21页
- 2017-12-26 发布于河北
- 举报
C程序语言13B
C++程序设计实用教程 清华大学出版社 2008 第13章 运算符重载 运算符概述 重载运算符 13.2.1 重载双目运算符 13.2.2 重载单目运算符 13.2.3 Date类的综合测试 *自定义版字符串类———String *趣味程序———“评委评分” 程序之类模板应用 小结 13.2.2 重载单目运算符 本小节主要内容 1. 重载前增(减)量运算符 ++对象 --对象 特点 先增(减)值,再以新值参加所在表达式的其他运算; 结果可以作左值。 2. 重载后增(减)量运算符 对象++ 对象— 特点 先以原值参加所在表达式的其他运算一次,再增(减)值; 只能作右值。 将准确地回答后增(减)量运算不能作左值的原因。 13.2.3 Date类的综合测试 打印日历 13.2.3 Date类的综合测试 日期数据域单向链表 13.3 自定义版字符串类String 本节的例子中有关于重载方括号运算符的语法及使用方法。 重载方括号运算符后,对于对象(例如对象s)而言,需注意对象的地址(如s)与s[0]是不同的,s[0]也不是s。 C++提供的字符串类string具有很强的功能。 在本节中,直接将C-字符串进行封装,设计一个自定义版的字符串类———String。 该类的设计方法与功能皆与string类有较大差别。 此处并不是想用String取代string,而是通过这个较完整、涉及较多知识点的例子使读者加深对相关知识点,特别是C-字符串及string的理解。 13.3 自定义版字符串类String 设计思想 ——— 封装C-字符串 数据成员 char *str; // 特点:对象带资源 成员函数 构造函数(提供多种情形下构造对象的方法) 深拷贝构造函数 深赋值运算符函数 析构函数 运算符函数 方括号运算([ ]) 拼接运算(+,+=) 关系运算(, =, , =, ==, !=) I/O运算(,) 关于方括号运算符 char String::operator[](int index){ return str[index];} 注 void test(){ int i=0; String s=”world”; s[i] = ’W’; // 运算符函数调用。s是对象,并非地址} 这里 s是对象,不是地址。没有s+i运算 s[i]不能写成 *(s+i); (s[0])不是对象的地址,而是对象所带资源的地址。 关于字符串拼接运算 operator+ 为何设计成友元函数? void test(){ int i=0; String s=”world”, s1; s1 = ”Hello, ” + s; s1 = s + ”, 你好!”; // s1 = ”Hello, ” + ”world”; 错误! s1 = String(”Hello, ”) + ”world”; s1 = ”Hello, ” + String(”world”);} 答:由于第一个操作数不一定是String对象 当第一个操作数为char*类型时,利用了转换构造函数String(const char*?=””);创建临时对象。 当两个操作数均为char*时,没有这样的运算符函数。 关于两个操作数相同的双目运算 String String::operator=(const String Str) { if(Str==this) return *this; delete [] str; str = new char[strlen(Str.str)+1]; strcpy(str, Str.str); return *this; } 注 void test(){ String s=”world”; s = s; // 自我赋值} 第13章 运算符重载 第2讲 本章要点 通过实例学语法 Date Date::operator++() // 前增量运算符函数 { days[1] = isLeapyear() ? 29 : 28; day++; if(day days[month-1]){ day = 1; month++; } if(month12){ month = 1; year++;} return *this; // 引用返回“本对象”,可作左值 } Date Date::operator--() // 前减量运算符函数 { days[1] = isLeapyear() ? 29 : 28; if(day==1
您可能关注的文档
- 4-2方差.ppt
- 4-重载-构造函数.ppt
- 4-定量分析 b.ppt
- 4-非线性规划.ppt
- 4.1.2从不同的方向看_课件_新人教版七上[一].ppt
- 4-3装配图的识读.ppt
- 4.1多媒体作品中的动画、视频(xuanxiu).ppt
- 4.1测试装置的基本特性.ppt
- 4.2.2降水课件.ppt
- 4.3.2_二次根式的混合运算[一].ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 2020四川既有及小区改造房屋建筑维修与加固工程说明及计算规则.pdf VIP
- 稀土永磁行业深度报告:供需向好看涨稀土,机器人催生新机遇.docx
- Inspur浪潮存储平台 AS5300G5&AS5500G5 产品白皮书 V2.0说明书用户手册.pdf
- 河北省高考物理一轮复习万有引力定律5.2 万有引力定律课件 .ppt VIP
- 牡丹切花品种筛选及采后技术研究.pdf VIP
- 复方口服避孕药临床应用专家共识(2025).pptx VIP
- 《心血管护理过程质控工具包(试用版)》2024.8.pdf VIP
- 中国徒步定向运动竞赛规则-讲解.pdf VIP
- 毕业设计(论文)-落叶清扫机设计.docx
- PICC进修汇报PPT课件.pptx VIP
原创力文档

文档评论(0)