c++的類的繼承與多型
1、是不是乙個父類寫了乙個virtual 函式,如果子類覆蓋它的函式不加virtual ,也能實現多型? 能
2、構造、拷貝構造和賦值運算子的概念
3、struct c
c(const c &c)
c(int i)
~c()
c& operator = (const c &c)
int i;
};void test()
4、四行輸出的結果依次順序為:
a. construct: c()
b. construct: c(const c &c)
c. construct: c(int i)
d. operator = (const c &c)
則輸出的正確順序為________
a.c b a d;
b. a c b d
c. c a b d
d. d b a c
5、請選擇下列程式的輸出結果________
class a
;virtual void
printsecond();
};class b: public a
;virtual void
printsecond();
};void main()
a. a a b b
b. b b b b
c. b b a b
d. a b b b
6、函式的各析構函式可以繼承嗎?派生類建構函式中各部分的執行次序是怎樣的?
7、下列運算子函式中,肯定不屬於類value的成員函式的是()
a、value operator/(value)
b、value operator-(value,value)
c、value operator+(value)
d、value operator*(value)
8、過載方法和重析構方法的區別
9、static在c和c++中表示什麼?
10、 c++的模板類有什麼用?
c++的類的基礎語法(修飾符)
1、c中已經有malloc/free ,為什麼在c++中還需要new/delete,並指出
2、malloc/free new/deletede 區別。
3、什麼是「引用」?宣告和使用「引用」要注意哪些問題?
4、巨集定義、內聯函式、和普通函式的區別
巨集和內聯函式的區別:
帶引數的巨集定義並不對引數進行運算,而是直接替換;
內聯函式先把引數表示式進行運算求值,然後把表示式的值傳遞給形式引數
內聯函式的引數型別和返回值型別在宣告中都有明確的指定;而帶引數
巨集定義的引數沒有型別的概念
巨集和普通函式的區別
<1>巨集做的是簡單的字串替換; 函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別.
<2>巨集的引數替換是不經計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自然是計算得來的.
<3> ,巨集占用的是編譯的時間,而函式占用的是執行時的時間.
<4>巨集的引數是不佔記憶體空間的, 函式呼叫時的引數傳遞則是具體變數之間的資訊傳遞,形參作為函式的區域性變數,顯然是占用記憶體的.
<5>函式的呼叫是需要付出一定的時空開銷的,因為系統在呼叫函式時,要保留現場,然後轉入被呼叫函式去執行,呼叫完, 再返回主調函式,此時再恢復現場,這些操作,顯然在巨集中是沒有的.
所謂"內聯函式"就是將很簡單的函式"內嵌"到呼叫他的程式**中,隻樣做的目的是為了避免上面說到的第5點,目的旨在節約下原本函式呼叫時的時空開銷.但必須注意的是:作為內聯函式,函式體必須十分簡單,不能含有迴圈、條件、選擇等複雜的結構,否則就不能做為內聯函式了。
5、c ,c++中struct有什麼區別?
5、使用純虛拷貝建構函式時可能會出現什麼異常
6、傳常數、傳指標、傳引用是什麼
7、static在c和c++中表示什麼?
8、哪乙個不是c++11中新增的語法()
a、右鍵引用
b、lamdba表示式
c、智慧型指標
d、rang-base for
9、靜態成員函式沒有(返回值/ this指標/指標引數/返回型別)?
10、以下**中的輸出語句能輸出嗎?
struct cls
;cls()
};cls obj;
cout << obj.m_i <
11、過載和重寫,以及隱藏的區別:
overload(過載):在c++程式中,可以將語義、功能相似的幾個函式用同乙個名字表示,但引數或返回值不同(包括型別、順序不同),即函式過載。
(1)相同的範圍(在同乙個類中);
(2)函式名字相同;
(3)引數不同;
(4)virtual 關鍵字可有可無。override(覆蓋):是指派生類函式覆蓋基類函式,特徵是:
(1)不同的範圍(分別位於派生類與基類);
(2)函式名字相同;
(3)引數相同;
(4)基類函式必須有virtual 關鍵字。
注:重寫基類虛函式的時候,會自動轉換這個函式為virtual函式,不管有沒有加virtual,因此重寫的時候不加virtual也是可以的,不過為了易讀性,還是加上比較好。overwrite(重寫):隱藏,是指派生類的函式遮蔽了與其同名的基類函式,規則如下:
(1)如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。
(2)如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)。
嵌入式筆試面試題(8) 死鎖
產生死鎖的必要條件是什麼?解決死鎖有幾種方法?產生死鎖的原因主要是 1 因為系統資源不足。2 程序執行推進的順序不合適。3 資源分配不當等。死鎖的四個必要條件 互斥條件 mutual exclusion 資源不能被共享,只能由乙個程序使用。請求與保持條件 hold and wait 已經得到資源的程...
嵌入式面試題
15 typedef 在c語言中頻繁用以宣告乙個已經存在的資料型別的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子 define dps struct s typedef struct s tps 以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?...
嵌入式面試題
1.main int ptr int a 1 printf d d a 1 ptr 1 這段程式的輸出是 a 2 2 b 2 1 c 2 5 d 以上均不是 2.考查自加操作 main 這段程式的輸出是 a i 4 j 2 b i 3 j 2 c i 3 j 4 d i 3 j 6 3.此題考查的是...