11、在重载操作符时,该操作符所包含的参数必须至少有一个是类类型。
重载操作时不能更改操作符所包含的参数个数。即不能把二元操作符重载成一元操作符。
操作符重载不会改变操作符的优先级。重载后的操作符和重载之前拥有相同的优先级。
重载的操作符不能包含默认参数。
=、[]、->和()只能作为类的(非静态)成员函数重载。
重载操作时不能更改操作符所包含的参数个数。即不能把二元操作符重载成一元操作符。
操作符重载不会改变操作符的优先级。重载后的操作符和重载之前拥有相同的优先级。
重载的操作符不能包含默认参数。
=、[]、->和()只能作为类的(非静态)成员函数重载。
点操作符(.)、作用域说明符(::)、sizeof、三元操作符(?:)及(.*)不能被重载。
12、当定义一个成员函数或者成员操作符时,可以直接访问调用对象的私有成员亦是(或私有成员函数)。然而,不仅仅如此,我们还可以直接
访问该类任何对象的任何私有成员变量(或私有成员函数)。(见第29条)
13、作为友元的操作符或者函数必须在类的定义中列出其声明,就像在类中列出成员函数的声明一样,区别在于必须在函数声明前面加上关键字
friend。但是友元不是成员函数,不能在函数的定义的第一行中加上类修饰词。
14、不能对类类型的成员变量返回引用。只能返回常量类型。否则可以修改私有的成员变量,因为引用类型可以做为左值使用。
15、假设返回值的类型为T,那么一个函数的返回值有以下4种不同的方式:
1)返回一般的值,对应的函数声明为 T f();
这种返回值类型不能作为左值,而且返回值可以直接调用成员函数来修改,即使用f().mutator()。返回值可以调用复制构造函数。
2)返回常量值,对应的函数声明为const T f();
上1)相似,唯一不同在于返回值不能直