c++Primer,十四,重载操作符与转换

来源:互联网 发布:linux 开机自动启动 编辑:程序博客网 时间:2024/05/06 00:23

第十四章 重载操作符与转换

C++ 定义了许多内置类型间的操作符和自动转换。像+,-,*,/等,使用这些很简单自然,另外在没学习类之前,貌似我们没有什么必要去重新定义一个+的操作,因为他们已经很好的工作了,在有了类类型之后,我们可能会希望我定义的两个类对象可以像内置类型那样实现+操作,完成两个类对象的相加。


重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号。像任意其他函数一样,重载操作符具有返回类型和形参表,如下语句:

Sales_item operator+(const Sales_item&, const Sales_item&);
用于内置类型的操作符,其含义不能改变。例如,内置的整型加号操作符不能重定义。重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义。


大多数重载操作符可以定义为普通非成员函数或类的成员函数。作为类成员的重载函数,其形参看起来比操作数数目少 1。作为成员函数的操作符有一个隐含的 this 形参,限定为第一个操作数。重载一元操作符如果作为成员函数就没有(显式)形参,如果作为非成员函数就有一个形参。一些有用的规则:赋值(=)、下标([])、调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些操作符定义为非成员函数将在编译时标记为错误。改变对象状态或与给定类型紧密联系的其他一些操作符,如自增、自减和解引用,通常就定义为类成员。对称的操作符,如算术操作符、相等操作符、关系操作符和位操作符,最好定义为普通非成员函数。


本章然后就开始介绍:输入和输出操作符,算术操作法和关系操作符,赋值操作法,下标操作符。成员访问符,自增自减操作符,调用操作符(这里引出函数对象)等等操作符的重载使用。另外介绍了转换与类类型,这些知识,没有细看,如果想深究或者潜心c++,今后倒是值得一看。

0 0