第9章运算符重载 本章内容: ■9.1概述 ■9.2运算符函数参数 ■9.3赋值与调用 ■9.4强制类型转换 ■9.5重载new和delete ■9.6表运算实例 2
2 第9章 运算符重载 本章内容: 9.1 概述 9.2 运算符函数参数 9.3 赋值与调用 9.4 强制类型转换 9.5 重载new和delete 9.6 表运算实例
9.1 概述 运算符:也称为运算符函数,运算符的操作数则相当 于函数的参数。 C++根据操作数个数的不同将运算符分为单目、双目 和三目运算符: 纯单目运算符,只能有一个操作数,包括: I、~、sizeof、new、delete等 。纯双目运算符,只能有两个操作数,包括: []、>、%、=等 。三目运算符,有三个操作数,包括: ?: ©既是单目又是双目的运算符,包括: 十、-、&、*等 3
3 9.1 概述 运算符:也称为运算符函数,运算符的操作数则相当 于函数的参数。 C++根据操作数个数的不同将运算符分为单目、双目 和三目运算符: ) 纯单目运算符,只能有一个操作数,包括: !、~、sizeof、new、delete 等 ) 纯双目运算符,只能有两个操作数,包括: [ ]、->、%、= 等 ) 三目运算符,有三个操作数,包括: ?: ) 既是单目又是双目的运算符,包括: +、-、&、* 等
9.1概述 左值运算符:是运算结果为左值的运算符。 其构成的表达式可以出现在等号左边。如前 置运算++、-以及赋值运算=、+=、*=和&= 等均为左值运算符。 冬某些运算符要求操作数为左值,如前置运算 ++和-。 还有一些运算符要求第一个操作数为左值, 如赋值运算=、+=、*=和&=等。 4
4 9.1 概述 左值运算符:是运算结果为左值的运算符。 其构成的表达式可以出现在等号左边。如前 置运算++、--以及赋值运算=、+=、*=和&= 等均为左值运算符。 某些运算符要求操作数为左值,如前置运算 ++和--。 还有一些运算符要求第一个操作数为左值, 如赋值运算=、+=、*=和&=等
9.1概述 【例9.1】左值运算符的用法。 void main(void) int x=0; ++X, ++++X ∥++x仍为左值,故可连续运算,x=3 -X=10; ∥-x仍为左值,故可再次赋值,x=10 (x=5)=12,x=5仍为左值,故可再次赋值,x=12 (x+=5)=7;x+=5仍为左值,故可再次赋值,x=7 } 5
5 9.1 概述 【例9.1】左值运算符的用法。 void main(void) { int x=0; ++x; ++ ++x; //++x仍为左值,故可连续运算,x=3 --x=10; //--x仍为左值,故可再次赋值,x=10 (x=5)=12; //x=5仍为左值,故可再次赋值,x=12 (x+=5)=7; //x+=5仍为左值,故可再次赋值,x=7 }
概述 运算符重载:将运算符看成是预定义的关于简单类型 的运算函数,运算符重载就是对这些函数进行的关于 类的对象的运算的重载。 运算符重载:用关键字operator加上参数(主要是)参数 类型的不同来说明重载。 冬【例9.2】将加法运算符重载为普通函数。 #include <iostream.h> class A{ int x; public: int getx const{return x; A(int x)A::x=x; }; 6
6 9.1 概述 运算符重载:将运算符看成是预定义的关于简单类型 的运算函数,运算符重载就是对这些函数进行的关于 类的对象的运算的重载。 运算符重载:用关键字operator加上参数(主要是)参数 类型的不同来说明重载。 【例9.2】将加法运算符重载为普通函数。 #include <iostream.h> class A{ int x; public: int getx () const{ return x; } A(int x) { A::x=x; } };