C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.

Slides:



Advertisements
Similar presentations
第 2 章 初探 C++.
Advertisements

2016中重卡网络规划 中重卡营销部 2016年6月.
第九讲 类与对象 (I)面向对象基础.
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
第八章 类和对象.
C++程序设计 王希 图书馆三楼办公室.
C++语言程序设计教程 第7章 类与对象 第7章 类与对象.
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
Chap 18 類別與物件 夫有土者,有大物也。有大物者,不可以物。 物而不物,故能物物。 明乎物物者之非物也,豈獨治天下百姓而已哉!
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
第11章 运算符重载 什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符 运算符重载实例.
刘胥影 东南大学计算机学院 面向对象程序设计1 2011~2012第3学期 刘胥影 东南大学计算机学院.
第一章 程序的基本结构. 第一章 程序的基本结构 教材及授课结构 本章目标 基本内容 扩展阅读 上机指导 应用举例 习题.
刘胥影 东南大学计算机学院 面向对象程序设计1 2010~2011第3学期 刘胥影 东南大学计算机学院.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
西安交通大学 计算机教学实验中心 大学C++程序设计教程 西安交通大学 计算机教学实验中心
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C#程序设计基础 $3 成员、变量和常量.
Object-Oriented Programming in C++ 第一章 C++的初步知识
程序设计期末复习 黎金宁
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
程式撰寫流程.
C++语言程序设计教程 第7章 类与对象 第7章 类与对象.
第八章 类与对象 本章要求: 掌握类的含义与定义格式。 掌握类的无参构造函数、带参构造函数、拷贝构造函数和赋值重载函数的定义格式及作用。
第6章 基本的IDL到C++的映射 3.2 简介 从IDL到C++的映射必须具备下面的条件 (1) 映射应该很直观,并且很容易使用
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
C++程序设计 string(字符串类) vector(容器类).
类类型 C++支持的内置类型和操作,如 int i=10; i=i%6; i=i+4;
谭浩强 编著 中国高等院校计算机基础教育课程体系规划教材 C++程序设计.
C++语言程序设计 第十一章 流类库与输入/输出.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
C#程序设计基础 $3 成员、变量和常量.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
物件導向程式設計 CH2.
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++程式設計入門 變數與運算子 作者:黃建庭.
C++大学基础教程 第10章 运算符重载 北京科技大学 2019/5/7 北京科技大学.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
面向对象技术 练习 ffh.
C++程序设计 吉林大学计算机科学与技术(软件)学院.
第二章 类型、对象、运算符和表达式.
C++程序设计基础 主讲人:谢昕 华东交通大学信息工程学院 第十~十二讲 多态性和虚函数 2005年春季学期.
Review 1~3.
第九章 物件導向-進階.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C++语言程序设计 第十章 C++标准模板库 成都信息工程学院计算机系.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
變數與資料型態  綠園.
資料!你家住哪裏? --談指標 綠園.
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计

基本知识 a C++语言程序设计

9.5 运算符重载 运算符重载 运算符重载的实质就是函数重载 是C++的一个特性,使得程序员可以把C++的运算符扩展到用户自定义的类类型中 对已有的运算符赋予多重含义,使同一运算符作用于不同类型的数据时发生不同的行为 C++语言程序设计

例:使用字符串处理函数完成字符串的复制和连接 9.5 运算符重载 例:使用字符串处理函数完成字符串的复制和连接 //使用字符串处理函数复制和连接字符串 #include <cstring> #include <iostream> using namespace std; void main() { char *s1="Hello";   char *s2="world";   char s3[80] ="";   strcpy(s3,s1); //字符串复制   cout<<s3<<endl;   strcat(s3,s2); //字符串连接 } C++语言程序设计

例:使用重载运算符“=”和“+”完成字符串的复制和连接 9.5 运算符重载 例:使用重载运算符“=”和“+”完成字符串的复制和连接 //使用重载运算符复制和连接字符串 #include <string> #include <iostream> using namespace std; void main() { string s1="Hello";   string s2="world";   string s3;   s3=s1; //字符串复制   cout<<s3<<endl;   s3=s1+s2; //字符串连接 } C++语言程序设计

9.5 运算符重载 运算符重载的规则 重载运算符时,运算符的运算顺序和优先级不变,操作数个数不变 不能创造新的运算符,只能重载C++中已有的运算符,并且规定有6个运算符不能重载 一般来讲,重载后的运算符的功能应当与运算符的实际意义相符 运 算 符 含 义 . 类属关系运算符 .* 成员指针运算符 :: 作用域运算符 ?: 条件运算符 # 编译预处理符号 sizeof 取数据类型的长度 C++语言程序设计

9.5 运算符重载 运算符重载的形式: C++语言程序设计 重载为类的成员函数 重载为类的友元函数 函数定义可以放在类的声明中,也可以在类声明的外部 类外定义的形式为:函数类型 类名::operator 运算符(形参表) { 函数体 } 重载为类的友元函数 类的声明中需要声明该函数为友元函数:friend 函数类型 operator 运算符(形参表); 函数定义必须在类的外部,形式为:函数类型 operator 运算符(形参表) C++语言程序设计

9.5 运算符重载 关于运算符重载定义的几点说明 函数类型指明了重载运算符的返回值类型,也就是运算结果类型 operator是定义运算符重载的关键字 “运算符”即要重载的运算符名称 形参表给出的是运算符需要的操作数 重载为成员函数:对象本身就是其中的一个操作数,形参表内参数的数目比操作数的数目少一个 重载为友元函数:每个形参代表运算符的一个操作数,形参表内参数的数目等同于操作数的数目 C++语言程序设计

例:创建一个复数类,将+、−、+=运算符重载为成员函数 9.5 运算符重载 例:创建一个复数类,将+、−、+=运算符重载为成员函数 //创建一个复数类,将+、−、+=运算符重载为成员函数 #include <iostream> #include <iomanip> using namespace std; class complex{ public: complex(double real=0,double imag=0): r(real),i(imag) {} complex operator +(complex&); //重载运算符的函数原型 complex operator -(complex&); complex& operator +=(complex&); void print() {cout<<setiosflags(ios::showpos)<<r<<" "<<i<<'i'<<endl;} private: double r , i; }; C++语言程序设计

9.5 运算符重载 C++语言程序设计 complex complex::operator +(complex& c) //重载“+”运算符 { return complex(r+c.r,i+c.i); } complex complex::operator -(complex& c) //重载“-”运算符 return complex(r-c.r,i-c.i); Complex& complex::operator +=(complex& c) //重载“+=”运算符 r+=c.r; i+=c.i; return *this; C++语言程序设计

9.5 运算符重载 C++语言程序设计 void main() { complex c1(1,1),c2(3,3),c3; c3.print(); c3=c1-c2; //复数相减 c3+=c2+=c1; //复数相加后赋值 } C++语言程序设计

例:创建一个复数类,将+、−、+=运算符重载为友元函数 9.5 运算符重载 例:创建一个复数类,将+、−、+=运算符重载为友元函数 //创建一个复数类,将+、−、+=运算符重载为成员函数 #include <iostream> #include <iomanip> using namespace std; class complex{ public: complex(double real=0,double imag=0): r(real),i(imag) {} friend complex operator +(complex&,complex&); friend complex operator -(complex&,complex&); friend complex& operator +=(complex&,complex&); void print() {cout<<setiosflags(ios::showpos)<<r<<" "<<i<<'i'<<endl;} private: double r , i; }; C++语言程序设计

9.5 运算符重载 complex operator +(complex& c1,complex& c2) //重载“+”运算符 { return complex(c1.r+c2.r,c1.i+c2.i); } complex operator -(complex& c1,complex& c2) //重载“-”运算符 return complex(c1.r-c2.r,c1.i-c2.i); complex& operator +=(complex& c1,complex& c2) //重载“+=”运算符 c1.r+=c2.r; c1.i+=c2.i; return c1; C++语言程序设计

9.5 运算符重载 C++语言程序设计 void main() { complex c1(1,1),c2(3,3),c3; c3.print(); c3=c1-c2; //复数相减 c3+=c2+=c1; //复数相加后赋值 } C++语言程序设计