C 概念梳理

2021-04-09 10:42:31 字數 2163 閱讀 4040

7:c++

概念總結

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7.12,函式的覆蓋:

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

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

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

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

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

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

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

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

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

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

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

Flex Box 概念梳理

flexible box 模型,通常被稱為 flexbox,是一種一維的布局模型。之所以說 flexbox 是一種一維的布局,是因為乙個 flexbox 一次只能處理乙個維度上的元素布局,一行或者一列。作為對比的是另外乙個二維布局css grid layout,可以同時處理行和列上的布局。採用 fl...

集合概念梳理

1.arraylist 有序不唯一 方便訪問 經常使用的乙個結果型別 可以和陣列進行對比 arraylist儲存資料的訪問和陣列相同 都是通過下標進行操作 不過arrarlist的下標是從1開始 arraylist長度可變 陣列長度不可變 arraylist可以理解成乙個長度可變的陣列 明顯比陣列更...

php fpm?fast cgi?CGI?概念梳理

剛開始對這個問題我也挺糾結的,看了 http權威指南 後,感覺清晰了不少。首先,cgi是幹嘛的?cgi是為了保證web server傳遞過來的資料是標準格式的,方便cgi程式的編寫者。web server 比如說nginx 只是內容的分發者。比如,如果請求 index.html,那麼web serv...