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