1-1函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
对
1-2重载函数可以带有默认值参数,但是要注意二义性。
对
1-3多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。
对
1-4对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。
错
在多数情况下,将运算符重载为类的成员函数和类的友元函数都是可以的。
一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。
类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。
若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好。
若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数
1-5对单目运算符重载为友元函数时,可以说明一个形参。而重载为成员函数时,不能显式说明形参。
对
1-6重载运算符可以保持原运算符的优先级和结合性不变。
对
1-7预定义的提取符和插入符是可以重载的。
对
1-8重载operator+时,返回值的类型应当与形参类型一致。 错,不是和形参类型一致
比如以下程序中,operator+的返回值类型有错:
class A {
int x;
public:
A(int t=0):x(t){ }
int operator+(const A& a1){ return x+a1.x; }
1-9 In C++, only existing operators can be overloaded.
对
1-10 重载函数的参数列表必须不相同。
对
2-1为了能出现在赋值表达式的左右两边,重载的"[]"运算符应定义为:2
- A operator [ ] (int);
- A& operator [ ] (int);
- const A operator [ ] (int);
- 以上答案都不对
2-2下列运算符中,( )运算符不能重载。3
- &&
- [ ]
- ::
- <<
2-3下列关于运算符重载的描述中,( )是正确的。4
- 运算符重载可以改变操作数的个数
- 运算符重载可以改变优先级
- 运算符重载可以改变结合性
- 运算符重载不可以改变语法结构
2-4下列对重载函数的描述中,( )是错误的。1
- 重载函数中不允许使用默认参数
- 重载函数中编译根据参数表进行选择
- 不要使用重载函数来描述毫无相干的函数
- 构造函数重载将会给初始化带来多种方式