C 單元六 類與物件

2021-08-03 10:29:09 字數 4831 閱讀 9072

1. 面向過程程式設計的模組是什麼?對模組的要求是什麼?答:面向過程是一種以過程為中心的程式設計思想,是一步一步的實現,模組就是一層一層的具體。要求是一步一步的完成。

2.什麼是軟體危機?答:落後的軟體生產方式無法滿足迅速增長的計算機軟體需求。

2. 面向過程程式設計的主要缺點是什麼?為什麼?答:模組化在規模不大的時候很清楚,大的規模易混亂。不易維護,不易復用,不易擴充套件。

3. 物件導向程式設計的模組是什麼?對模組的要求是什麼?答:模組是乙個抽象化物體,實體。

4. 什麼是類?它是一種型別,還是變數?答:型別

5. 什麼是物件?它是一種型別,還是變數?答:型別

6. 類與物件是什麼關係?在記憶體中存在的是內還是變數?答:類是物件的實體化,在記憶體中存在的是內。

7. 怎麼定義乙個類?用什麼關鍵字?什麼是類體?類體後面有分號嗎?答:用class定義,類體是類內部的資料和方法。類後有分號。

8. 乙個類必須有類名嗎?沒有類名的類怎麼使用?答:有類名。無類名為匿名函式。會自動析構,所以需要乙個外界乙個變數獲取。

9. 為什麼要用訪問關鍵字private,protected,public對類的成員進行限定?答:對類進行封裝

10. 類的三種訪問許可權private,protected,public各是什麼含義?它們可以被省略嗎?如果省略,預設是那種?結構體成員的預設訪問許可權是什麼?答:private是私有的,protected是受保護的,public是公共的,預設是public,結構體預設的是public。

11. 什麼是類的外部訪問和內部訪問?分別能訪問那些成員?答:外部能訪問public成員,內部使用函式可以訪問所有成員。

12. 類的成員函式必須是外部訪問嗎?如果有私有成員函式,誰有權訪問?答:成員函式不必是外部訪問,能訪問的只有類中的函式。

13. 什麼是函式的宣告?什麼是函式的定義(或稱實現)?答:直接對函式進行宣告,不加{},定義加了{}。{}裡面寫命令

14. 宣告內聯(inline)成員函式有哪兩種方式?答:在類內部宣告,加上inline關鍵字,在類外定義。在類內部宣告,在類外部定義,同時加上inline關鍵字。注意:此種情況下,內聯函式的定義通常應該放在類定義的同一標頭檔案中,而不是在原始檔中。這是為了保證內聯函式的定義在呼叫該函式的每個原始檔中是可見的。

15. 在類外定義成員函式時,必須對成員函式進行何種限定?為什麼?答:前面需要類名和域作用符,進行對函式的限定是某個類中的函式。

16. 若干個同類物件,他們的資料成員是共享儲存,還是單獨儲存(每個物件有自己的資料成員)?成員函式的儲存方式呢?系統如此設計的理由是什麼?答:單獨儲存,分別存在自己類變數中。對每個同類類名進行區分。

17. this指標指向誰,為什麼有this指標?它在**?需要定義this指標嗎?答:乙個物件的this指標並不是物件本身的一部分,不會影響sizeof(物件)的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。this指標是類的乙個自動生成、自動隱藏的私有成員,它存在於類的非靜態成員函式中,指向被呼叫函式所在的物件。全域性僅有乙個this指標,當乙個物件被建立時,this指標就存放指向物件資料的首位址。不需要有定義this指標。

18. 靜態成員變數是同類物件所共有儲存,還是每個物件單獨儲存的?答:共有儲存的。

19. 如何定義和初始化靜態成員變數?它有什麼作用?它的生命期和作用域如何?答:static定義同時賦值,進行統計,生命期程式結束。

20. 如何定義靜態成員函式?它有什麼作用?它能訪問非靜態成員變數嗎?答:static 函式,訪問靜態成員變數,不能訪問非靜態成員變數。

21. 靜態成員函式有this指標嗎?為什麼?答:沒有。不與任何的物件引數連續。

22. 定義乙個物件,意味著建立該物件,也意味著所有成員變數都必須建立嗎?答:是

23. 在類定義中,可以對成員變數初始化嗎?答:可以

24.建構函式是類的特殊成員函式,如何定義和識別建構函式?答:函式名和類名相同則是析構函式。

25. 建構函式在什麼時間、由誰呼叫?建構函式的任務是什麼?答:在建立的時候,由程式呼叫,對函式的初始化。

26. 析構函式是類的特殊成員函式,如何定義和識別析構函式?答:~+類名。

27. 析構函式在什麼時間,由誰呼叫,析構函式的任務是什麼?答:在程式結束的時候,釋放記憶體的時候使用。

28. 如果不編寫構造和析構函式,系統會自動生產,它做什麼?答:預設構造和析構。

29. 構造和析構函式允許由返回值嗎?返回值可以是void嗎?答:不允許由返回值。

30. 構造和析構函式允許帶有引數嗎?允許帶多個引數嗎?允許過載嗎?答:允許帶引數,允許多個,允許過載。

31. 構造和析構函式的訪問必須是public嗎?為什麼?答:是,因為構造,析構是自動初始化或者釋放需要的函式。

32. 構造和析構函式可以是內聯inline函式嗎?答:可以

33. 如果定義了預設的建構函式,系統還自動生成乙個嗎?答:預設,就不自動生成了。

34. 什麼是缺少的建構函式?允許由多個預設的建構函式嗎?預設建構函式必須是系統自動生成嗎?預設建構函式必須是沒有引數嗎?答:預設建構函式是預設建構函式,不接受任何引數,不進行操作的建構函式,宣告了函式就不會dion關於預設建構函式,只能有乙個。

35. 什麼是建構函式的引數初始化列表?非建構函式可以有引數初始化列表嗎?答:建構函式初始化成員變數,非建構函式可以有引數初始化列表。

36. 引數初始化列表的作用是什麼?它該怎麼書寫?答:初始化值,:變數名(值);初始化順序和定義順序有關。

37. 物件構造與析構的順序是什麼?答:先構造後析構。

38. 什麼是物件陣列?物件陣列的每個元素必須是同類的物件嗎?答:物件陣列是類名定義的陣列,每個元素同類。

39. 定義(即建立)物件陣列時,需要呼叫多少次建構函式?為什麼?答:陣列個數。定義乙個物件需要一次建構函式。

40. 析構(即刪除)物件陣列時,需要呼叫多少次析構函式?為什麼?答:陣列個數,有多少個陣列析構多少次。

41. 物件陣列的初始化該如何書寫(語法格式)?答:int id1, id2, id3;equipmentpiece bestpieces = ;

42. 什麼是物件指標?什麼是物件指標陣列?答:類同指標陣列

43. 成員變數可以是指標型別嗎?什麼是成員函式指標?答:可以,指向成員函式的指標。

44. 如何定義成員函式指標?與非成員函式指標有何區別?答:在類中定義函式指標,的靜態成員函式採用與一般函式指標相同的呼叫方式,而受this指標的影響,類的非靜態成員函式與一般函式指標是不相容的。而且,不同類的this指標是不一樣的,因此,指向不同類的非靜態成員函式的指標也是不相容的。指向類的非靜態成員函式的指標,在宣告時就需要新增類名。

45. 如何給成員函式指標賦值?賦值時需要帶上引數嗎?答:通過對類變數用成員運算子修改,賦值時需要帶上引數。

46. 必須用物件的成員函式指標去呼叫成員函式,而不能用類名呼叫,為什麼?答:對類的封裝。

47. 物件、物件指標、物件的引用可以作為函式的形參嗎?答:可以。

48. 物件作為形參,引數是如何傳遞的?有什麼缺點?答:傳遞類。

49. 函式可以返回乙個物件,物件指標,物件的引用嗎?答:可以

50. 函式內部是如何返回乙個物件的 ?答:定義的時候定義類名即可返回物件。

51. 同類物件可以相互賦值嗎?物件的各個資料成員都是如何賦值的?賦值時,物件的函式成員也相互賦值嗎?答:可以,直接覆蓋。

52. 無關的非同類物件可以相互賦值嗎?為什麼?答:不可以,型別不同。

53. 什麼是物件的淺拷貝?淺拷貝在什麼情況下會出錯(不適合場合)?答:

54. 拷貝建構函式是類的特殊成員函式、如何定義和識別拷貝建構函式?答:

55. 拷貝建構函式在什麼時間、由誰呼叫?拷貝建構函式的任務是什麼?答:

56. 如果不編寫拷貝建構函式,系統會自動建立乙個,它執行淺拷貝嗎?答:

57. 同類物件賦值時,會呼叫拷貝建構函式嗎?答:

58. 在初始化物件(用已有同類物件)時,會呼叫拷貝建構函式嗎?

59. 如果在物件的淺拷貝出錯,應該怎麼做?答:

60. 拷貝建構函式有且僅有乙個形參嗎?這個形參是什麼型別?答:

61. 結構體的成員變數允許是另乙個類的物件嗎?(內嵌物件)?答:

62. 組合類物件的構造與析構順序是怎麼樣的?答:

63. 組合類允許由多個內嵌物件,其構造與析構順序如何?答:

64. 什麼是類的向前宣告?如何宣告?什麼情況下會用到它?答:

65. 通過類的向前宣告,能夠知道嘞的內部結構嗎(成員變數與函式)?答:

66. 什麼是常成員函式?怎麼宣告?答:

67. 什麼是常物件?常物件的成員函式都是常成員函式嗎?答:

68. 如何初始化常成員變數?答;

69. const用於物件指標時,分為那三種情況?各是什麼含義?如何書寫?答:

70. 常引用做函式形參是什麼含義?答:

71. 什麼是友元函式?如何宣告、定義和使用?答:

72. 友元關係由誰認定?友元關係不具有對稱性和傳遞性是什麼意思?

73. 友元函式有什麼優缺點?

74. 什麼是友元類?如何宣告,定義和使用友元類?答:

實訓十四 貪婪法解連續揹包問題。

–貪婪法是一種迭代運算,從乙個初始解出發,一步一步逼近最優解。

–揹包問題,揹包承重量一定,物品價值和重量不一致,如何達到揹包承重達到最**值。

–進行對每個物品的單位大小進行操作。

實訓十五 組合類和排序

實訓十六 拷貝建構函式與物件複製

—拷貝建構函式是複製乙個完全相同的物件,預設的是淺拷貝。

===用乙個物件初始化另乙個物件

===物件作為函式的形參

===物件作為返回值

這三種都會有拷貝。

六 類 物件與魔法方法

1 類定義中哪些是類屬性,哪些是例項屬性?python類資料屬性 定義在類裡面但在函式外面的變數,它們都是靜態的。定義在 init 方法裡的變數就是例項屬性,這些屬性只有物件被建立時才會被建立。2 怎麼定義私有 法?在 python 中定義私有方法只需要在函式名前加上兩個下劃線 那麼這個方法 函式 ...

c 物件導向(六) 類的方法(一)

方法與屬性作為類的最重要成員,這裡主要說明方法的宣告 方法的屬性 靜態方法 方法的過載。方法的宣告 修飾符 返回值資料型別 方法名稱 輸入引數的名稱 例如public int a int a return a 這個簡單的方法,public 公有的,返回值的型別是int,方法的名字叫做a,需要輸入乙個...

Kotlin筆記(六)類

class 類名 類頭 指定其型別引數 主 建構函式等 class person constructor firstname string 沒有類頭 class person 沒有類頭類體 class person 建構函式 class person constructor firstname st...