首页 理论教育C++程序设计基础教程:单目运算符重载

C++程序设计基础教程:单目运算符重载

【摘要】:解:上述程序与例4.2程序的功能相同,只是在这里重载运算符有一个返回值,因此A++或++B的结果是一个整数值。程序的执行结果如下:n=7n=62.重载单目运算符“->”“->”运算符是成员访问运算符,这种一元运算符只能被重载为成员函数。

1.重载单目运算符“++”、“--”

++和--是C++中最典型的单目运算符,它们是变量自增1和自减1的运算符。在类中可以对这两个一元运算符进行重载。例如,有以下程序:

上述程序中通过“++”运算符重载将M++运算转换成对类的私有变量n的增1运算。实际上,M++相当于调用operator++()成员函数。程序的执行结果如下:

n=6

如同“++”自增运算符有前缀和后缀两种使用形式一样。“++”和“--”重载运算符也有前缀和后缀两种运算符重载形式,以“++”重载运算符为例,其语法格式如下:

使用前缀运算符的语法格式如下:

++对象;

使用后缀运算符的语法格式如下:

对象++;

【例4.2】分析以下程序的执行结果。

解:上述程序中,定义了前缀++和后缀++重载运算符,在main()中,语句M++调用后缀重载运算符,语句++N调用前缀重载运算符。程序的执行结果如下:

n=7

n=6

重载运算符也可以具有返回值,其使用格式如同一般的成员函数一样。(www.chuimin.cn)

【例4.3】分析以下程序的执行结果。

解:上述程序与例4.2程序的功能相同,只是在这里重载运算符有一个返回值,因此A++或++B的结果是一个整数值。程序的执行结果如下:

n=7

n=6

2.重载单目运算符“->”

“->”运算符是成员访问运算符,这种一元运算符只能被重载为成员函数。一般成员访问运算符的使用格式如下:

对象->成员

成员访问运算符“->”函数重载的一般形式为:

数据类型类名∷operator->();

例如,有以下程序:

上述程序中,设计了一个重载“->”运算符成员函数,该函数返回当前对象的指针。从而导致“s->disp();”和“s.disp();”两个语句都是正确的,实际上,前者通过调用重载“->”运算符成员函数转换成后者的格式。程序的执行结果如下:

n=10,m=20.5

n=20,m=56.8