C++問題集(ZZ)

來源:互聯網
上載者:User
(From http://blog.csdn.net/whoopee/archive/2005/04/03/335572.aspx)  C++問題集(轉自csdn論壇)

我總結的C++問題集,您也可以在下面的網址找到pdf格式的下載:
http://www.designersky.com/upload/cpp_puzzle.pdf

1:C和C++有什麼區別:
C++支援物件導向的編程,同時相容C語言的面向過程編程

2:VB和C++有什麼區別:
VB是一門基於對象語言,有對象和類的概念,但是對於繼承、多態實現的不好

3:VC和C++有什麼區別:
VC可以看成是C++加上MFC基礎類庫的組合

4:聲明一個引用是需要注意什麼,函數返回引用時需要注意什麼:
1 必須在定義引用的時候就聲明引用對象
2 不能更該引用對象
3 不能引用數字,常量,運算式
函數引用返回不能引用局部變數

5:引用和指標有什麼區別:
指標:可以隨意指向不同的地址(水性楊花)
引用:聲明後不能引用其它變數(從一而終)

6:常量引用和常量指標的區別:
不能改變常量引用的值
可以改變常量指標的值,但是不能改變常量指標的指向

7:預設參數和函數重載的區別和應用:
預設參數可以看作是函數重載的特例,Java中取消了預設參數。
應用:預設參數可以涵蓋普通應用和特殊應用,但如果要更靈活的處理,需要函數重載

8:void add(int a, int b)和int add(int a, int b, int c=0)是否是正確的函數重載:
不是,有可能存在二義性

9:void add(int a, int b)和int add(const int &a, const int &b)是否是正確的函數重載:
不是,整型的引用也是整型

10:內嵌函式有什麼用,是否在函數名前加上inline關鍵字就成為內嵌函式了?:
用途:節省調用函數的開銷,加快運行速度
不一定,編譯器會自動最佳化

11:何時會用到::操作符:
類外實現方法,引用類的靜態成員等

12:static成員和普通成員的區別:
1 靜態成員可以不經執行個體化直接引用
2 靜態屬性可以有初始值
3 靜態方法中只能訪問靜態成員
4 靜態成員一般描述對象的共同特徵"

13:舉一個應用static的例子:
連鎖店是一個類,店名屬性應該是靜態(班級班費)

14:建構函式和解構函式的作用:
建構函式用來初始化屬性,為指標分配記憶體空間,解構函式用來釋放分配的空間

15:new/delete操作符和malloc/free的區別:
1 new/delete是C++標準函數,效率高
2 new自動獲得分配的size,使用方便
3 new/delete會引發構造/解構函式

16:寫一個為int型指標分配100個空間,然後回收的例子:
int *p = new int[100];
delete [] p;

17:什麼是淺複製,什麼是深層複製:
當類中包含指標屬性時,淺複製只複製地址,深層複製則複製內容

18:寫一個類類比cin和cout:
class MyCout {
public:
    MyCout & operator <<(int a) {
        printf(""%d"", a);
        return *this;
    }
}

19:描述C++的異常處理:
就是try, catch模型"

20:同VB的異常處理相比,C++有何優勢:
C++的異常處理區分了正常代碼和異常處理代碼,並且在拋出使用者自訂異常方面更加完善

21:簡述C++中的4種繼承模型:
單一繼承,多重繼承,層級繼承,多極繼承

22:圖中如果類A, C中存在同名方法abc,如何引用:
執行個體化D的對象d,可以用d.A::abc()或d.B::abc()引用A中的方法,d.C::abc()引用C中的方法

23:子類會繼承父類中所有的內容嗎?:
private的成員不會被繼承

24:題22的圖中,執行個體化D的對象後,建構函式和解構函式的順序是什嗎?:
A()-->B()-->C()-->D()-->~D()-->~C()-->~B()-->~A()

25:如果父類中存在有參數的建構函式,一般來說也要為它提供沒有參數的建構函式,為什嗎?:
因為子類在執行個體化的時候回收先調用父類中沒有參數的建構函式(除非子類中聲明調用父類中帶參數的),這是因為父類中存在建構函式,編

譯器不會為父類產生預設的建構函式,就會發生錯誤

26:什麼叫Override,和Overload有什麼區別?:
Override:函數覆蓋,發生在父類和子類中,子類覆蓋函數和父類的源函式宣告必須完全一致
Overload:函數重載,重載的一組函數必須具有各自不同的參數

27:父類和子類對象是否可以相互轉換?:
是單向的,可以將子類對象賦給父類對象,也可以讓父類指標指向子類,但是不能反過來

28:繼承可以幹什嗎?:
可以實現代碼重用
代碼重用的三個階段:
1 複製     缺點:代碼分散
2 模組化   缺點:不易維護,擴充
3 繼承"

29:父類指標指向子類對象後是否能調用子類中的方法?:
不能,除非將父類中的方法聲明成virtual
注意:不能通過父類指標調用子類中特有的方法

30:虛函數和純虛函數的區別和應用:
區別:純虛函數一般沒有實現
應用:父類中有必要實現該方法,考慮到多態可以用虛函數,如果父類中沒有必要實現該方法,但是期望在子類中實現,可以使用純虛函數

31:類和抽象類別的區別和應用:
區別:抽象類別不能執行個體化對象,抽象類別的子類一定要覆蓋父類中的純虛函數
應用:類一般用來描述現實中存在的對象,抽象類別用來描述現實中不存在的概念。比如抽象類別“形狀”和類“圓”"

32:子類一定要覆蓋(實現)父類中的純虛函數嗎?虛函數呢?:
子類如果不覆蓋父類中的純虛函數子類不能執行個體化對象,也變成了抽象類別,虛函數子類可以不覆蓋

33:虛解構函式有什麼用途,舉例?:
虛解構函式可以保證子類中的解構函式能被調用

34:寫一個多態:比如CPU商品

35:寫一個類工廠:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.