C++进修摘要之七:运算符重载
当前位置:以往代写 > C/C++ 教程 >C++进修摘要之七:运算符重载
2019-06-13

C++进修摘要之七:运算符重载

C++进修摘要之七:运算符重载

副标题#e#

C++语言中预界说的运算符的操纵工具只能是根基数据范例,可是,在实际应用中,对付许多用户自定 义数据范例(如类)也需要雷同的成果,这就需要对已有的运算符赋予多种寄义,使同一个运算符具有作 用于差异类性的数据导致差异范例的行为,这就是运算符重载。因此,运算符重载的目标是配置C++语言 中的某一运算符,让它们之间并不斗嘴,C++语言会按照运算符的位置分辨应利用哪一种成果举办运算。 可见,运算符重载的利益是答允改变利用于系统内部的运算符的操纵方法,以适应用户新界说范例的雷同 运算。

运算符重载的实质是函数重载。事实上,C++语言中的每一个运算符对应着一个运算符函数,在实现过 程中,把指定的运算表达式中的运算符转化为对运算符函数的挪用,而表达式中的运算工具转化为运算符 函数的实参,这个进程是在编译阶段完成的。譬喻:

int a=1,b=2;

a+b;

表达式“a+b”在编译前,将被表明为函数挪用形式:operator+(a,b)。

个中,operator是一个要害字,它与后头的“+”配合构成了该运算符函数的函数名。

运算符重载是一种非凡的函数重载。在类中可以回收下述两种要领对运算符函数举办重载。

1.重载为类的成员函数

将运算符函数重载为类的成员函数是指在类中界说一个同名的运算符函数,其语句名目为:

TYPE X::[email protected](形参表)

{

//函数体

//从头界说运算符@在指定类X中的成果

}

个中,operator是要害字,@是需要被重载的运算符,X是需要重载该运算符的类名,TYPE是该运算符 函数的返回值范例。要害字operator与后头的运算符@配合构成了该运算符函数的函数名。


#p#副标题#e#

2.重载为类的友元函数

可以界说一个与某一运算符函数同名的全局函数,然后再将该全局函数声明为类的友元函数,从而实 现运算符的重载。其语法名目为:

friend TYPE [email protected](形参表);

下面先容运算符重载的几个问题:

l 以上两种重载形式均可会见类的私有成员;

l 险些所有的运算符都可以被重载,但下列运算符不答允重载:

“。”、“。*”、“::”、“?:”

l 运算符重载后,既不会改变原运算符的优先级和团结特性也不会改变利用运算符的语法和参数个数 ;

l “=”、“()”、“[]”和“->”等运算符不能 重载为友元函数;

l 当运算符重载为类的成员函数时,函数的参数个数比本来的运算工具少一个(右++和右 ——除外);当重载为类的友元函数时,参数个数与原运算符的运算个数沟通;单目运算符最 好重载为类的成员函数,而双目运算符则最好重载为类的友元函数。

相关文章

C++进修摘要之二:结构函数和析构函数

http://www.bianceng.cn/Programming/cplus/200911/12302.htm

C++进修摘要之一:类和工具

http://www.bianceng.cn/Programming/cplus/200911/12301.htm

    关键字:

在线提交作业