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"這樣聲明的字符串是存儲在只讀存儲區(qū)的,不可修改,所以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);
}
程序執(zhí)行結果是?
選項:
1
1f
運行報錯
編譯報錯
答:編譯報錯
解析:
這是java的題,高精度類型得到低精度結果需要進行強轉(zhuǎn);C++是可以這樣寫的。
5.下列程序數(shù)據(jù)結果是多少(大 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個元素的指針數(shù)組,每個元素是一個int型指針
解析:
int * pa[5] 默認[]要先結合,所以先可以得到pa[5],即pa是一個大小為5的數(shù)組
然后表達式剩下int * , 即表示數(shù)組中存儲的是int型的指針。
綜合就是pa是個指針數(shù)組,數(shù)組大小為5
而對于int (*pa)[5],括號優(yōu)先級別最高得到(*pa),表示pa是一個指針
然后是外部的數(shù)組符號,表示pa指向的是一個數(shù)組,數(shù)組的大小是5
最后是那個int ,表示數(shù)組中存儲的是int型的數(shù)據(jù)。
綜合就是pa是個數(shù)組指針,指向的數(shù)組為5個int型的元素.
7.C++中的拷貝構造函數(shù)在下面哪些情況下會被調(diào)用?
選項:
A.對象創(chuàng)建的時候
B.使用一個類的對象去初始化該類的一個新對象
C.被調(diào)用函數(shù)的形參是類的對象
D.當函數(shù)的返回值是類的對象時,函數(shù)執(zhí)行完成返回調(diào)用者
答:BCD
解析:
拷貝構造函數(shù)從來不顯示調(diào)用,而是由編譯器隱式地調(diào)用:
(1) 用類的一個對象去初始化另一個對象時;
(2) 當函數(shù)的形參是類的對象時(也就是值傳遞時),如果是引用傳遞則不會調(diào)用;
(3) 當函數(shù)的返回值是類的對象或引用時。
附上一篇解釋拷貝構造函數(shù)的文章:https://www.cnblogs.com/alantu2018/p/8459250.html