C 筆試題易錯點總結(類和物件)

2021-08-19 04:24:28 字數 1729 閱讀 6151

1、建構函式的意義:(1)由於類的部分成員是私有的,若程式需要對其進行初始化,只有通過成員函式實現。(2)在宣告物件時自動呼叫建構函式。

2、建構函式沒有返回值,但不被宣告為void,即沒有宣告型別。

3、每次建立類物件(甚至使用 new 動態分配記憶體時,c++都會使用建構函式)

4、無法使用物件來呼叫建構函式,在建構函式構造出物件之前,物件是不存在的。

5、使用者沒有自己定義建構函式,在宣告物件時也會有預設的建構函式被呼叫。一旦宣告建構函式後,編譯器不再提供預設建構函式,需要自行提供,否則將編譯出錯。

6、建構函式可以過載,即可以同時擁有多個建構函式,根據呼叫匹配相應建構函式。

7、析構函式沒有引數。

8、呼叫析構函式的時機由編譯器決定,通常不在**中顯式呼叫。(1)靜態型物件在程式結束時自動呼叫。(2)動態物件在**塊執行完時呼叫。(3)new建立物件會駐留在棧或自由儲存區,使用delete釋放記憶體時呼叫析構函式。

9、編譯器也會提供預設析構函式(若程式設計師沒有自己定義)。

10、如果物件持續到main函式結束,雖然依然會在main函式結束後呼叫析構函式,但在視窗環境中無法看到析構函式的輸出。

11、兩個物件之間賦值,不會呼叫建構函式。

12、當物件已經存在,再次呼叫建構函式重新賦值時,編譯器是通過讓建構函式建立乙個新的、臨時物件,然後將其內容複製非目標物件,隨後呼叫析構函式刪除臨時物件。如stock = stock(1),這個過程會呼叫一次建構函式,一次析構函式。

13、呼叫析構函式的順序:先建立的後刪除。

14、使用列表初始化野隊呼叫相應的建構函式。

15、若建構函式只有乙個引數,則將物件初始化為乙個與該引數型別相同的值時,該建構函式將被呼叫。如:a a = 32;

16、預設建構函式可以沒有引數,若有則必須給所有引數提供預設值。

17、建構函式中使用了new,則必須在析構函式中使用delete

18、宣告物件陣列時,陣列中有多少個元素便會呼叫多少次預設建構函式。

19、初始化物件陣列的方案是。首先使用預設構造杉樹建立陣列元素,然後大括號中的建構函式將建立臨時物件,再將臨時物件的內容複製到相應元素中。建立類物件陣列,必須要有預設建構函式。如下程式段,共呼叫6次建構函式,6次析構函式。

stock stocks[5] = 

stock[2] = stock("bb",2);

20、定義位於類宣告中的函式都將自動成為內聯函式。等同於在類外實現使使用 inline修飾。

21、建立的每個新物件都有自己的儲存空間,用於儲存其內部變數和類成員;但同乙個類的所有物件共享一組類方法,即每種方法只有乙個副本。

22、類內闖將乙個static常量,該常量與其他靜態變數儲存在一起,而不是儲存在物件中。因此該static常量只有乙個,被所有該類的物件共享。

23、過載運算子左邊是呼叫物件,右邊是傳入引數。作為成員函式過載的運算子,左邊必須是該類的物件。

24、友元函式在類內宣告,無法通過類物件呼叫,定義時不加限定符和friend。類宣告決定哪個函式是友元。將運算子過載為友元,運算子左邊可以是其他型別。

25、過載 << 運算子,需要返回ostream的引用,可以使得cout連續輸出。具體原因與cout機制有關,cout<26、定義運算子時,必須選擇過載的運算子作為成員函式還是友元函式中的一種格式

C 易錯點總結

1.下面這段 考察變數的作用域問題。cpp view plain copy include using namespace std void other intmain 答案如下 main 0 10 0 other 4 0 15 main 0 10 8 other 6 4 15 考察點 區域性作用域...

C語言易錯點總結

一下分為幾個部分分別加以說明。一 關鍵字 1.什麼是定義?什麼是宣告?兩者有何區別?答 定義是建立乙個物件,並未該物件分配一塊記憶體和取乙個名字,這個名字就是變數名或者物件名 宣告是告訴編譯器這個變數或者物件的記憶體已經存在,這裡只是引用。兩者最重要的區別在於,定義建立了物件並為物件分配了記憶體,而...

C語言程式設計易錯點總結

二 變數類 三 陣列類 四 指標類 五 預處理類 六 輸入輸出類 高亮 c語言是一門面向過程的 抽象化的通用程式語言,廣泛應用於底層開發。它是目前最著名,最流行的語言,效率高 功能強 用法靈活。在學習程式語言的過程中,最怕最難的就是找bug,而找bug又是必不可少的能力,甚至可能是程式設計中必經的乙...