孫鑫VC 講座筆記 2 C

2021-04-13 07:41:40 字數 4213 閱讀 9049

1, c語言中,結構體struct中不能包括函式的,而在c++中struct中可以包括函式。

2,c++中結構體和類可以通用,區別主要表現在訪問控制方面:struct中預設是public,而 class中預設的是private。

3,建構函式最重要的作用是建立物件的本身,c++中每個類可以擁有多個建構函式,但必須至少有乙個建構函式,當乙個類中沒有顯式提供任何建構函式,c++編輯器自動提供乙個預設的不帶引數的建構函式,這個預設的建構函式只負責構造物件,不做任何初始化工作。但在乙個類中只要自己定義乙個建構函式,不管帶參不帶參,編輯器不再提供預設的不帶參的建構函式了。建構函式沒有返回值。

4,析構函式當乙個物件生命週期結束時候被呼叫來**物件占用的記憶體空間。乙個類只需有乙個析構函式。析構函式沒有返回值也不的帶引數。

5,析構函式的作用與建構函式相反,物件超出起作用範圍對應的記憶體空間被系統收回,或被程式用delete刪除的時候,物件的析構函式被呼叫。

6,函式的過載條件:函式的引數型別、個數不同,才能構成函式的過載。過載是發生在同乙個類中。

7,類是抽象的,不占用具體物理記憶體,只有物件是例項化的,是占用具體物理記憶體的。

8,this指標是隱含指標,指向物件本身(this指標不是指向類的),代表了物件的位址。所有的物件呼叫的成員函式都是同一**段,但每個物件都有自己的資料成員。當物件通過呼叫它的成員函式來訪問它的資料成員的時候,成員函式除了接收實參外,還接收了物件的位址,這個位址被乙個隱藏的形參this所獲取,通過這個this指標可以訪問物件的資料成員和成員函式。

9,物件中public屬性的成員在外部和子類中都可以被訪問;protected屬性的成員在外部不能被訪問,在子類中是可以訪問的;private屬性在子類中和外部都不能被訪問。

10,類的繼承訪問特性:(public,protected,private)

a)基類中private屬性成員,子類無論採用那種繼承方式都不能訪問。

b)採用public繼承,基類中的public,protected屬性的成員訪問特性在子類中仍然保持一致。

c)採用protected繼承,基類中的public,protected屬性成員訪問特性在子類中變為protected.

d)採用provate繼承,基類中的public,protected屬性成員訪問特性在子類中變為provate.

11,子類和基類的建構函式或析構函式呼叫順序:

當呼叫子類的建構函式時候先呼叫基類的建構函式(如果沒有指明,則呼叫基類卻省那個不帶引數的建構函式;如果要指明則在子類建構函式名後加":基類名(引數)")。析構函式則相反,先呼叫子類析構函式,後呼叫基類的析構函式。

12,函式的覆蓋:

函式的覆蓋是發生在發生父類和子類之間的。(函式的過載是發生在同乙個類中)

當子類中重寫了父類的某些成員函式後,子類中的成員函式覆蓋了父類的對應同名成員函式。

13,用父類指標訪問子類物件成員時候,只能訪問子類從父類繼承來的那部分。(這時候外部不可以訪問父類中保護和私有的部分,子類中不可訪問父類私有部分。)

14,多型性:在基類的的成員函式前加virturl變成虛函式,當用子類物件呼叫該功能的成員函式時候,子類有的就呼叫子類的,子類沒有的就呼叫基類的。

當c++編譯器在編譯的時候,發現被呼叫的成員函式在基類中定義的是虛函式,這個時候c++就會採用遲繫結技術(late binding),在執行的時候,依據物件的型別來確定呼叫的哪個函式,子類有呼叫子類的,子類沒有的就呼叫基類的。

如果基類中的成員函式不是虛函式,則這時候的繫結是早期繫結,在編譯的時候就已經確定該呼叫哪個函式。

15,純虛函式:在類中定義時 eg: virtual void f1()=0;

純虛函式沒有函式體,含有純虛函式的類叫做抽象類,抽象類不能例項化物件。當子類從抽象類的基類中派生出來時候,如果沒有實現基類中的純虛函式,則子類也是個抽象類,也不能例項化物件。

純虛函式被標名為不具體實現的虛成員函式,純虛函式可以讓類只具有操作的名稱而不具有具體的操作的內容,讓派生類在繼承的時候再給出具體的定義。如果派生類沒有給出基類的純虛函式的具體定義的時候,派生類也為乙個抽象類,也不能例項化物件。

16,引用:變數的別名。引用需要在定義的時候用一變數或物件初始化自己。引用一旦在定義的時候初始化,就維繫在乙個特定的變數或物件上。

引用不占用物理記憶體(與定義引用的目標共用同一記憶體)。指標變數需要占用物理記憶體,用來儲存位址。

1, c語言中,結構體struct中不能包括函式的,而在c++中struct中可以包括函式。

2,c++中結構體和類可以通用,區別主要表現在訪問控制方面:struct中預設是public,而 class中預設的是private。

3,建構函式最重要的作用是建立物件的本身,c++中每個類可以擁有多個建構函式,但必須至少有乙個建構函式,當乙個類中沒有顯式提供任何建構函式,c++編輯器自動提供乙個預設的不帶引數的建構函式,這個預設的建構函式只負責構造物件,不做任何初始化工作。但在乙個類中只要自己定義乙個建構函式,不管帶參不帶參,編輯器不再提供預設的不帶參的建構函式了。建構函式沒有返回值。

4,析構函式當乙個物件生命週期結束時候被呼叫來**物件占用的記憶體空間。乙個類只需有乙個析構函式。析構函式沒有返回值也不的帶引數。

5,析構函式的作用與建構函式相反,物件超出起作用範圍對應的記憶體空間被系統收回,或被程式用delete刪除的時候,物件的析構函式被呼叫。

6,函式的過載條件:函式的引數型別、個數不同,才能構成函式的過載。過載是發生在同乙個類中。

7,類是抽象的,不占用具體物理記憶體,只有物件是例項化的,是占用具體物理記憶體的。

8,this指標是隱含指標,指向物件本身(this指標不是指向類的),代表了物件的位址。所有的物件呼叫的成員函式都是同一**段,但每個物件都有自己的資料成員。當物件通過呼叫它的成員函式來訪問它的資料成員的時候,成員函式除了接收實參外,還接收了物件的位址,這個位址被乙個隱藏的形參this所獲取,通過這個this指標可以訪問物件的資料成員和成員函式。

9,物件中public屬性的成員在外部和子類中都可以被訪問;protected屬性的成員在外部不能被訪問,在子類中是可以訪問的;private屬性在子類中和外部都不能被訪問。

10,類的繼承訪問特性:(public,protected,private)

a)基類中private屬性成員,子類無論採用那種繼承方式都不能訪問。

b)採用public繼承,基類中的public,protected屬性的成員訪問特性在子類中仍然保持一致。

c)採用protected繼承,基類中的public,protected屬性成員訪問特性在子類中變為protected.

d)採用provate繼承,基類中的public,protected屬性成員訪問特性在子類中變為provate.

11,子類和基類的建構函式或析構函式呼叫順序:

當呼叫子類的建構函式時候先呼叫基類的建構函式(如果沒有指明,則呼叫基類卻省那個不帶引數的建構函式;如果要指明則在子類建構函式名後加":基類名(引數)")。析構函式則相反,先呼叫子類析構函式,後呼叫基類的析構函式。

12,函式的覆蓋:

函式的覆蓋是發生在發生父類和子類之間的。(函式的過載是發生在同乙個類中)

當子類中重寫了父類的某些成員函式後,子類中的成員函式覆蓋了父類的對應同名成員函式。

13,用父類指標訪問子類物件成員時候,只能訪問子類從父類繼承來的那部分。(這時候外部不可以訪問父類中保護和私有的部分,子類中不可訪問父類私有部分。)

14,多型性:在基類的的成員函式前加virturl變成虛函式,當用子類物件呼叫該功能的成員函式時候,子類有的就呼叫子類的,子類沒有的就呼叫基類的。

當c++編譯器在編譯的時候,發現被呼叫的成員函式在基類中定義的是虛函式,這個時候c++就會採用遲繫結技術(late binding),在執行的時候,依據物件的型別來確定呼叫的哪個函式,子類有呼叫子類的,子類沒有的就呼叫基類的。

如果基類中的成員函式不是虛函式,則這時候的繫結是早期繫結,在編譯的時候就已經確定該呼叫哪個函式。

15,純虛函式:在類中定義時 eg: virtual void f1()=0;

純虛函式沒有函式體,含有純虛函式的類叫做抽象類,抽象類不能例項化物件。當子類從抽象類的基類中派生出來時候,如果沒有實現基類中的純虛函式,則子類也是個抽象類,也不能例項化物件。

純虛函式被標名為不具體實現的虛成員函式,純虛函式可以讓類只具有操作的名稱而不具有具體的操作的內容,讓派生類在繼承的時候再給出具體的定義。如果派生類沒有給出基類的純虛函式的具體定義的時候,派生類也為乙個抽象類,也不能例項化物件。

16,引用:變數的別名。引用需要在定義的時候用一變數或物件初始化自己。引用一旦在定義的時候初始化,就維繫在乙個特定的變數或物件上。

引用不占用物理記憶體(與定義引用的目標共用同一記憶體)。指標變數需要占用物理記憶體,用來儲存位址。

孫鑫VC 講座筆記 2 C

1,c語言中,結構體struct中不能包括函式的,而在c 中struct中可以包括函式。2,c 中結構體和類可以通用,區別主要表現在訪問控制方面 struct中預設是public,而 class中預設的是private。3,建構函式最重要的作用是建立物件的本身,c 中每個類可以擁有多個建構函式,但必...

孫鑫VC 講座筆記 2 C

1,c語言中,結構體struct中不能包括函式的,而在c 中struct中可以包括函式。2,c 中結構體和類可以通用,區別主要表現在訪問控制方面 struct中預設是public,而 class中預設的是private。3,建構函式最重要的作用是建立物件的本身,c 中每個類可以擁有多個建構函式,但必...

孫鑫VC 講座筆記 2 C

1,c語言中,結構體struct中不能包括函式的,而在c 中struct中可以包括函式。2,c 中結構體和類可以通用,區別主要表現在訪問控制方面 struct中預設是public,而 class中預設的是private。3,建構函式最重要的作用是建立物件的本身,c 中每個類可以擁有多個建構函式,但必...