1、运算符函数
运算符函数的名字是由关键字operator后跟对应的运算符构成。
二元运算符可以定义为取一个参数的非静态成员函数,也可以定义为去两个参数的非成员函数。
一个运算符函数必须或者是一个成员函数,或者至少有一个用户定义类型的参数。
不存在运算符屏蔽,这就保证了内部运算符可以用,并且为运算符定义新的意义时,不用修改原有的类的声明。
复制构造函数采用的引用参数。被用在初始化变量,参数传递和值返回。
2、构造函数不能刻画:
从用户定义类型到内部类型的转换,因为内部类型不是类
从新类型到某个已有类型的转换,而不去修改那个已有类的声明。
3、友元
成员函数只能通过类对象访问,隐式转换不会被用于非const的引用参数。
某个运算的所有运算对象都允许隐式类型转换,采用const引用参数或非引用参数,可以选择友元函数。
4、基本运算符
赋值和初始化是不同的操作。
通过将构造函数声明为explicit(显示)的方式就可以抑制隐式转换。
5、下标【】
函数operator[ ]可以用于为类的对象定义下标运算的意义。
6、函数调用
记法形式expression(expression-list),是一种二元运算,其中expression作为左运算对象,而expression-list作为右运算对象。
operator()中()的参数列表将被求值。必须作为成员函数。
7、间接
间接运算符->可以被定义为一个一元的运算符。
可以在通过类对象间接访问类成员的对象。
可以看成是c++里提供的一种受限的,但也非常重要的委托机制。