C++语言中预定义的运算符的操作对象只能是基本数据类型,但是,在实际应用中,对于很多用户自定 义数据类型(如类)也需要类似的功能,这就需要对已有的运算符赋予多种含义,使同一个运算符具有作 用于不同类性的数据导致不同类型的行为,这就是运算符重载。因此,运算符重载的目的是设置C++语言 中的某一运算符,让它们之间并不冲突,C++语言会根据运算符的位置辨别应使用哪一种功能进行运算。 可见,运算符重载的优点是允许改变使用于系统内部的运算符的操作方式,以适应用户新定义类型的类似 运算。
运算符重载的实质是函数重载。事实上,C++语言中的每一个运算符对应着一个运算符函数,在实现过 程中,把指定的运算表达式中的运算符转化为对运算符函数的调用,而表达式中的运算对象转化为运算符 函数的实参,这个过程是在编译阶段完成的。例如:
int a=1,b=2;
a+b;
表达式“a+b”在编译前,将被解释为函数调用形式:operator+(a,b)。
其中,operator是一个关键字,它与后面的“+”共同组成了该运算符函数的函数名。
运算符重载是一种特殊的函数重载。在类中可以采用下述两种方法对运算符函数进行重载。
1.重载为类的成员函数
将运算符函数重载为类的成员函数是指在类中定义一个同名的运算符函数,其语句格式为:
TYPE X::operator@(形参表)
{
//函数体
//重新定义运算符@在指定类X中的功能
}
其中,operator是关键字,@是需要被重载的运算符,X是需要重载该运算符的类名,TYPE是该运算符 函数的返回值类型。关键字operator与后面的运算符@共同组成了该运算符函数的函数名。
时间: 2024-10-29 15:54:47