题目一
题目二
C++在调用函数时,当实参和形参的数据类型不一致时,会发生数据类型转换!将低精度转换为高精度时,由编译器隐式完成;将高精度转换为低精度时,必须用强制类型转换运算符;
static_cast<>()来转换才不会造成数据丢失。精度由低到高: char->int->double->long double。
因此 B 选项在将整数类型 8 复制给 char 时,会发生截断赋值。
题目三
本题考察了两个易错点
1.数组下标范围是0~MAX-1,当循环到i = MAX时,A[i] = A[MAX],此时数组发生了越界
2.i的类型是unsigned char,即i的取值范围是0~255,所以当i = 255时,i + 1 = 255 + 1后会导致i = 0,因此for (i = 0; i <= MAX; i++)会一直循环下去。
题目三
这句话的说法是正确的。
在程序进行编译时,形式参数只是在函数定义和调用中起到占位符的作用,此时并不会为其分配实际的存储空间。
只有在函数被调用时,才会为实际参数分配存储空间,并将其值传递给形式参数,形式参数在函数调用的栈帧中获得临时的存储空间。
题目四
题目五
题目六
题目七
组合是在新类中以原有类的对象作为数据成员,继承是在不改变现有的类的基础上,采用现有类的形式并在其中添加新代码,组合一般用于在新类中使用现有类的功能而不是他的接口的情况,就是新类用户看到的只是为新类所定义的接口。而继承则是用于在新类需要向基类转化的情况(多态),这也是组合和继承使用的最清晰的判断方法。
题目八
题目九
题目十???
A选项,类至少会有一个构造函数,即使不写,编译器也会生成一个.
B选项,默认构造函数有三种,编译器生成的,空参数,全缺省参数,所以是错的.
C选项,没有有意义的默认值,可以提供空构造进行参数的初始化,所以错误.
D选项,编译器生成没有问题,错误是不会进行初始化.