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