您现在的位置: 万盛学电脑网 >> 程序编程 >> 网页制作 >> Html5 >> 正文

C++中运算符的重载

作者:佚名    责任编辑:admin    更新时间:2022-06-22

下面是C++中运算符的重载

事实上,C++语言中的每一个运算符对应着一个运算符函数,在实现过 程中,把指定的运算表达式中的运算符转化为对运算符函数的调用,而表达式中的运算对象转化为运算符 函数的实参,这个过程是在编译阶段完成的。

例如: int a=1,b=2; a+b; 表达式“a+b”在编译前,将被解释为函数调用形式:operator+(a,b)。 其中,operator是一个关键字,它与后面的“+”共同组成了该运算符函数的函数名。 运算符重载是一种特殊的函数重载。在类中可以采用下述两种方法对运算符函数进行重载。

1.重载为类的成员函数 将运算符函数重载为类的成员函数是指在类中定义一个同名的运算符函数,其语句格式为: TYPE X::operator@(形参表) { //函数体 //重新定义运算符@在指定类X中的功能 } 其中,operator是关键字,@是需要被重载的运算符,X是需要重载该运算符的类名,TYPE是该运算符 函数的返回值类型。关键字operator与后面的运算符@共同组成了该运算符函数的函数名。

2.重载为类的友元函数 可以定义一个与某一运算符函数同名的全局函数,然后再将该全局函数声明为类的友元函数,从而实 现运算符的重载。其语法格式为: friend TYPE operator@(形参表); 下面介绍运算符重载的几个问题: l 以上两种重载形式均可访问类的私有成员; l 几乎所有的运算符都可以被重载,但下列运算符不允许重载: “。”、“。*”、“::”、“?:” l 运算符重载后,既不会改变原运算符的优先级和结合特性也不会改变使用运算符的语法和参数个数 ; l “=”、“()”、“[]”和“->”等运算符不能 重载为友元函数; l 当运算符重载为类的成员函数时,函数的参数个数比原来的运算对象少一个(右++和右 ——除外);当重载为类的友元函数时,参数个数与原运算符的运算个数相同;单目运算符最 好重载为类的成员函数,而双目运算符则最好重载为类的友元函数。

以上就是我们给大家介绍的C++中运算符的重载,希望大家继续关注本网站。