第四章运算符重载 4.1什么是运算符重载 4.2运算符重载的方法 4.3运算符重载的规则 4.4运算符重载函数作为类成员函数和友元函数 4.5重载双目运算符 4.6重载单目运算符 4.7重载流插入和流提取运算符 4.8不同类型数据间的转换
0 4.1 什么是运算符重载 4.2 运算符重载的方法 4.3 运算符重载的规则 4.4 运算符重载函数作为类成员函数和友元函数 4.5 重载双目运算符 4.6 重载单目运算符 4.7 重载流插入和流提取运算符 4.8 不同类型数据间的转换 第四章 运算符重载
导入:一个小例子为什么需要运算符重载 例题4-1: 利用前面所学的知识写一段程序,定 义一个复数类complex, 包含一对双精度浮点数real和imag。 及其相应的构造函数。 并使用成员函数实现两个复数对象的相 加
例题4-1: 利用前面所学的知识写一段程序, 定 义一个复数类complex, 包含一对双精度浮点数real和imag。 及其相应的构造函数。 并使用成员函数实现两个复数对象的相 加。 1 导入:一个小例子为什么需要运算符重载
导入:一个小例子为什么需要运算符重载 例4-1:用函数实现复数相加 ① #include <iostream> ② class complex /类定义 void complex:display() ③ {public: ② {cout<“(“<real<<“,” ④ complex ()real =0;image =0; ③ <image<“i)”<endl; ⑤ complex(double r,double i) ④ ⑧ real r;image=i;) ⑤ Int main() ⑦ complex add(complex &c2); ⑥ {complex c1(3,4),c2(5,-10),c3; ⑧ void display(); ⑦ c3=c1.add(c2); ⑨ private: ⑧ cout<“c1=“;c1.display()i ⑩ double real,image; ⑨ cout<<"c2=";c2.display(); @: ⑩ @ cout<“c1+c2=“; complex complex::add (complex &c2) complex c; c3.display(); c.realreal c2.real; return 0; c.image image c2.image; ② } 西 return c; 特点:烦琐、不方便。可不可以用c3=c1+c2的形式来表达呢? 只要对”+”号进行重载,复数加法就可以写成这种形式c3=c1+c2
2 ① void complex::display( ) ② { cout << “( “ << real << “,” ③ << image << “i )” << endl; ④ } ⑤ Int main( ) ⑥ { complex c1(3,4), c2(5,-10), c3; ⑦ c3=c1.add (c2); ⑧ cout << “c1 = “; c1.display( ); ⑨ cout << “c2 = ”; c2.display( ); ⑩ cout << “c1+c2 = “; c3.display( ); ⑪ return 0; ⑫ } 特点:烦琐、不方便。可不可以用 c3=c1+c2 的形式来表达呢? 只要对“+”号进行重载,复数加法就可以写成这种形式c3=c1+c2。 例4-1:用函数实现复数相加 ① #include <iostream> ② class complex //类定义 ③ {public: ④ complex ( ) { real = 0;image = 0; } ⑤ complex (double r, double i) ⑥ { real = r; image = i; } ⑦ complex add (complex &c2); ⑧ void display( ); ⑨ private: ⑩ double real, image; ⑪ }; ⑫ complex complex::add (complex &c2) ⑬ { complex c; ⑭ c.real = real + c2.real; ⑮ c.image = image + c2.image; ⑯ return c; ⑰ } 导入:一个小例子为什么需要运算符重载
4.1什么是运算符重载 一、运算符 1、x+y×z 简洁 2、C++为其内部类型提供了一组运算符。 如a=3+5b=6-2i++a<b等 很多概念如复数运算、矩阵代数、逻辑信号、 字符串等需要使用用户自定义类型表示: 3、如何为这些类定义各种运算符? 使用运算符重载
一 、运算符 1、 x+y×z 2、 C++为其内部类型提供了一组运算符。 如 a=3+5 b=6-2 i++ a<b 等 很多概念如复数运算、矩阵代数、逻辑信号、 字符串等需要使用用户自定义类型表示; 3、如何为这些类定义各种运算符? 使用运算符重载 4.1 什么是运算符重载 简洁
4.1什么是运算符重载 二、运算符重载的意义 运算符重载是C++的一项强大功能。通过重载 ,可以扩展C++运算符的功能,使它们能够操作 用户自定义的数据类型,增加程序代码的直观性 和可读性。 三、运算符重载的定义 重载,就是重新赋予新的含义。运算符重载是 对已有的运算符赋予多重含义,使同一个运算符 作用于不同类型的数据导致不同行为的发生。 。9
二、运算符重载的意义 运算符重载是C++的一项强大功能。通过重载 ,可以扩展C++运算符的功能,使它们能够操作 用户自定义的数据类型,增加程序代码的直观性 和可读性。 三、运算符重载的定义 重载,就是重新赋予新的含义。运算符重载是 对已有的运算符赋予多重含义,使同一个运算符 作用于不同类型的数据导致不同行为的发生。 4.1 什么是运算符重载