1、關(guān)于C++標(biāo)準(zhǔn)模板庫(kù),下列說(shuō)法錯(cuò)誤的有哪些:【多選】(AD)
A、std::auto_ptr類(lèi)型的對(duì)象,可以放到std::vector>容器中
B、std::shared_ptr類(lèi)型的對(duì)象,可以放到std::vector>容器中
C、對(duì)于復(fù)雜類(lèi)型T的對(duì)象tObj,++tObj和tObj++的執(zhí)行效率相比,前者更高
D、采用new操作符創(chuàng)建對(duì)象時(shí),如果沒(méi)有足夠內(nèi)存空間而導(dǎo)致創(chuàng)建失敗,則new操作符會(huì)返回NULL
A中auto是給別人東西而自己沒(méi)有了。所以不符合vector的要求。而B(niǎo)可以。C不解釋。new在失敗后拋出標(biāo)準(zhǔn)異常std::bad_alloc而不是返回NULL。
2、以下哪些做法是不正確或者應(yīng)該極力避免的:【多選】(AC)
A、構(gòu)造函數(shù)聲明為虛函數(shù)
B、派生關(guān)系中的基類(lèi)析構(gòu)函數(shù)聲明為虛函數(shù)
C、構(gòu)造函數(shù)調(diào)用虛函數(shù)
D、析構(gòu)函數(shù)調(diào)用虛函數(shù)
3、下面程序執(zhí)行結(jié)果為【說(shuō)明:X86_64環(huán)境】(D)
A、16000 1101 13002 2
B、4 2 3 60
C、16000 2 3 2
D、4 1101 13002 60
4、請(qǐng)問(wèn)程序的輸出結(jié)果是(30)
#define DOUBLE(x) x+x // x2
int i = DOUBLE(5)5;
cout<
5、 p1為指向一維數(shù)組的指針,所以a + 1指向{50,60,70,80}這一維的地址。減一則為4的地址;同理第二個(gè)輸出1101。同理,由于數(shù)組的列是4,所以(p2 - 1) + 16就相當(dāng)于(p2) + 12,所以第三個(gè)輸出13002。
第四個(gè)由于p1是指針,所以sizeof(p1)為8(68位的系統(tǒng)),所以第四個(gè)輸出60。
6、在32位操作系統(tǒng)gcc編譯器環(huán)境下,下面的程序的運(yùn)行結(jié)果是(A)
A、12 12
B、8 8
C、9 9
D、12 16