1.List,Set,Map都继承自继承Collection接口?
答:List,Set等集合对象都继承自Collection接口
Map是一个顶层结果,不继承自Collection接口

2.已知int a[] = { 0,2,4,6,8,10 }, *p = a+1,其值等于0的表达式是( )?
选项:
*(p++)
*(++p)
*(p--)
*(--p)
答:*(--p)
解析:
*p=a+1 p指向第二个元素,要指向第一个元素即p--;或者--p;但是由于p--要语句完成时赋值,故C错。
3.给出以下定义,下列哪些操作是合法的?
const char *p1 = “hello”;
char *const p2 = “world”;
选项:
p1++;
p1[2] = ‘w’;
p2[2] = ‘l’;
p2++;
答:p1++
解析:
只能选A。
p1是指向字符常量的指针,p1本身不是常量,所以p1++合法,A正确。
p2本身是指针常量,可以指向非常量的字符,但一旦指定后就不可修改指向的位置,故D错误;"hello"这样声明的字符串是存储在只读存储区的,不可修改,所以B,C都错误。
4.定义如下程序:
public static void main(String[] args)
{
Double x=1.2;
long l = 1.2;
float f = x/l;
System.out.println(f);
}
程序执行结果是?
选项:
1
1f
运行报错
编译报错
答:编译报错
解析:
这是java的题,高精度类型得到低精度结果需要进行强转;C++是可以这样写的。
5.下列程序数据结果是多少(大 A 的 ascii 码是 65 )?
#include <stdio.h>
enum etest{
eparam1,
eparam2,
eparam3=10,
eparam4,
eparam5='a',
eparam6
}epr;
int main()
{
printf(“%d,%d”,eparam4,eparam6);
return 0;
}
答:11,78
解析:
枚举赋值问题,从上一个定义开始逐个递增
'a'=97
'A'=65
6.对于int *pa[5]的描述,正确的是?
答:pa是一个具有5个元素的指针数组,每个元素是一个int型指针
解析:
int * pa[5] 默认[]要先结合,所以先可以得到pa[5],即pa是一个大小为5的数组
然后表达式剩下int * , 即表示数组中存储的是int型的指针。
综合就是pa是个指针数组,数组大小为5
而对于int (*pa)[5],括号优先级别最高得到(*pa),表示pa是一个指针
然后是外部的数组符号,表示pa指向的是一个数组,数组的大小是5
最后是那个int ,表示数组中存储的是int型的数据。
综合就是pa是个数组指针,指向的数组为5个int型的元素.
7.C++中的拷贝构造函数在下面哪些情况下会被调用?
选项:
A.对象创建的时候
B.使用一个类的对象去初始化该类的一个新对象
C.被调用函数的形参是类的对象
D.当函数的返回值是类的对象时,函数执行完成返回调用者
答:BCD
解析:
拷贝构造函数从来不显示调用,而是由编译器隐式地调用:
(1) 用类的一个对象去初始化另一个对象时;
(2) 当函数的形参是类的对象时(也就是值传递时),如果是引用传递则不会调用;
(3) 当函数的返回值是类的对象或引用时。
附上一篇解释拷贝构造函数的文章:https://www.cnblogs.com/alantu2018/p/8459250.html