C++操作符重载全面讲解

C++中将操作符进行重新定义,就是操作符重载。但不是所有的操作符都可以重载,这里列出C++中可以重载的操作符:

new? ? delete? ? new[]? ? delete[]

+ ? – ? * ? / ? % ? ?^? ? & ? | ? ~

! = ? < ? > ? += ? -=? ? *= ? /= ? %=

^= ? &= ? |= ? <<? ? >> ? >>=? ?<<=? ? ==? ? !=

<= ? >=? ? && ? ||? ? ++ ? –? ? ,? ? ->* ? ->

以上操作符有一元操作符,也有二元操作符,但注意不能混用。

比如说重载一元操作符就不能有两个参数。

还有重载二元操作符不能给一个参数

一元操作符重载,只接受一个参数;二元操作符重载,只接受二个参数。

operator操作符重载语法可以看这篇:operator操作符

C++中有两种方式的操作符重载:

1.类中操作符重载

类中写一元操作符取反例子,来说明类中操作符重载:

输出结果:

以上代码有个问题是一元操作符重载为什么没有参数?

因为操作符重载是定义在类的内部,操作符函数也是类成员函数,它有一个隐性的this 指针的,而这个隐性的 this 指针其实就是它的一个操作数,这样其实是传了一个参数。

如果对 this 指针不明白的可以看这篇: this 指针

所以在类中定义操作符重载函数时,一元操作符没有输入参数,二元操作符有一个输入参数。

2.全局操作符重载

定义了+二元操作符全局重载,可以看出它的参数是二个,跟上面讲的一样。

A类中又将操作符函数声明成友元函数,这是因为操作符重载函数中有直接访问A类中的私有成员。友元部份不理解可看这篇:友元函数和友元类

《C++操作符重载全面讲解》上有1条评论

评论已关闭。