1、C+之运算符重载,输入输出流详细介绍有了 C+语言,你就可以重载函数和运算符。重载是一种应用,它在同一范围中为一个给定函数名称提供了多种定义。委托编译器依据调用该函数的参量选择合适的函数或运算符的版本。例如: double max(double d1,double d2)return (did2)?d1:d2;int max (int e1,int e2)return (e1e2)?e1:e2;作为一个重载函数,函数 max 在程序中使用如下:main()int e=nax(12,8);double d=max(123.4,12.3);return e+(int)d;在第一个例子中,要求出两个
2、整型变量的最大值,故调用函数(int,int)。然而,在第二种情况下,两个参量是浮点型,因此调用的函数是 max(double,double)。重载函数之间的区别在于带有不同初始值的参量类型。因而对一个给定类型的参量以及对于该类型的引用,在重载的意义上来说是完全相同的。它们被看成是相同的,因为它们采用了相同的初始值。例如:max(double,double)和(double如果说明为全局函数,要带一个参量。双目运算符说明为成员函数只带一个参量;如果说明为全局函数,要带两个参量。所有的重载运算符除了赋值(operator=)外均可被派生类继承。重载运算符的成员函数的第一个参量总是激活该运算符的对
3、象的类类型参量(运算符被定义的类,或者定义了运算符的类的派生类)。对于第一个参量也不支持转换。任何运算符的意义都可能被完全地改变了,这包括取地址(s+=1;s+;+s;对于重载了运算符的类类型来说,这种确信是靠不住的,而且,对于在基本类型中使用这些运算符的隐含条件,对于重载的运算符来说是放松了。例如:加法/赋值操纵符,在应用于基本类型时,要求其左操作数是 l 值的;但此运算符重载以后就没有这种要求了。下面给出可重载的单目运算符: 运算符名称 ! 逻辑非 然而大多数用户自定义型双目运算符返回类类型或类类型的引用。这里顺便提一下赋值,赋值运算符严格地说是一个双目运算符。它的说明等同于其它双目运算符的说明,但下列情况除外。 它必须是非静态成员函数。没有 operator=可以说明为非成员函数。它不能被派生类继承。 如果不存在缺省的 operator=函数,则编译器会为该类生成一个缺省的函数。