【摘要】:运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。在C++中,运算符重载只能使用成员函数和友元函数两种形式。除了赋值运算符外,其他运算符函数都可以由派生类继承,并且派生类还可有选择地重载自己所需要的运算符。
既然运算符重载不能改变运算符的基本功能、优先级、结合性和操作数的个数,那么在进行运算符重载时,要遵循什么样的原则才能在保证这些要求的基础上,实现重载呢?
▶5.5.2.1 运算符重载的规则
(1)C++中的运算符除了少数几个以外,几乎全部可以重载,不能定义新的运算符,只能重载已有的这些运算符。
(2)运算符重载函数不能是带默认值的函数。
(3)重载之后运算符的优先级和结合性都不能改变。
(4)不能创建新的运算符。
(5)运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重载的功能应当与原有功能相类似,不能改变原运算符所需操作数的个数,同时至少要有一个操作数是自定义类型,一般就是类类型。
总之,当C++语言原有的一个运算符被重载之后,它原先所具有的语义并没有消失,只相当于针对一个特定的类定义了一个新的运算符。(www.xing528.com)
▶5.5.2.2 运算符重载的方式
上面提到,运算符重载要用函数来实现。在C++中,运算符重载只能使用成员函数和友元函数两种形式。究竟采用哪一种形式,主要取决于实际情况和用户的习惯。可以参考以下经验:
(1)单目运算符最好重载为成员函数,该重载函数不需要形参。
(2)对于复合的赋值运算符,如“+=、-=、*=、/=、%=、&=、!=、>>=、<<=”,建议重载为成员函数。
(3)有些运算符如“=、()、[]、->、new、delete”,只能使用成员函数进行重载。
(4)对于其他运算符,建议重载为友元函数。
除了赋值运算符外,其他运算符函数都可以由派生类继承,并且派生类还可有选择地重载自己所需要的运算符。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。