C 一些概念理解

2021-09-13 23:46:10 字數 1997 閱讀 8913

封裝:隱藏細節,資料和方法實行public,private,protece

繼承:不修改的前提下擴充套件功能

多型:將父類設定成於子類對等地執行操作

過載是函式名相同,引數不同

重寫是函式名相同,引數相同,子類重新定義父類的虛函式

(1) 類中有const和引用型別的成員。

(2) 類中有某個成員類沒有public的預設建構函式

不是。兩個不同型別的指標之間可以強制轉換 

全域性物件的建構函式會在main 函式之前執行

(1) 靜態儲存區:例如全域性變數,static 變數,在程式編譯的時候就已經分配好,的整個執行期間都存在。

(2) 堆:稱動態記憶體分配。程式在執行的時候用malloc 或 new,的生存期由程式設計師決定

(3) 棧:執行函式時,函式內區域性變數在棧上建立,函式執行結束時自動釋放

static_cast:類層次結構中基類和子類之間指標或引用的轉換,沒有型別檢查,編譯時進行

dynamic_cast:類層次結構中基類和子類之間指標或引用的轉換,有型別檢查,執行時進行

reinterpret_cast:不同型別的指標間的轉換

const_cast:常量和非常量的轉換

關聯:兩個類一般的關係

聚合:a可以有0個或者多個b

組合:a必須有指定數量的b

只對建構函式起作用,用來抑制隱式轉換

(1) 引用就是某個目標變數的「別名」,引用本身不佔儲存單元,系統也不給引用分配儲存單元。

(2) 不能建立陣列的引用

(3) 使用引用傳遞函式的引數,在記憶體中並沒有產生實參的副本,它是直接對實參操作;

(4) 使用常引用:既要利用引用提高程式的效率,又要保護傳遞給函式的資料不在函式中被改變

(5) 不能返回區域性變數的引用

(6) 不能返回函式內部new分配的記憶體的引用 (否則的話會造成記憶體洩漏,編譯器幫我們避免了)

(7) 乙個基類的引用可以指向它的派生類例項

(8) 「引用」與指標的區別是,指標是用乙個指標變數去指向乙個物件,引用是物件的別名

(1) strlen(char*)函式求的是字串的實際長度 

(2) sizeof是運算子,strlen是函式

(3) sizeof可以用型別做引數,strlen只能用char*做引數,且必須是以''\0''結尾的

(4) 陣列做sizeof的引數不退化,傳遞給strlen就退化為指標了

(5)sizeof編譯時執行,strlen執行時執行

(1) 不是乙個函式,位元組數的計算在程式編譯時進行,而不是在程式執行的過程中才計算

(2) 是c/c++中的乙個操作符(operator),簡單的說其作用就是返回乙個物件或者型別所佔的記憶體位元組數。 

(3) sizeof也可以對乙個函式呼叫求值,其結果是函式返回型別的大小,函式並不會被呼叫

比如,sizeof( foo() );  foo() 是函式呼叫

(4) c99標準規定,函式、不能確定型別的表示式以及位域(bit-field)成員不能被計算sizeof值。

比如,sizeof( foo );//   foo 是函式

(5) sizeof的計算發生在編譯時刻,所以它可以被當作常量

表示式使用

(6) 基本資料型別指short、int、long、float、double這樣的簡單內建資料型別,由於它們都是和系統相關的,所以在不同的系統下取值可能不同 

(7) 指標變數的sizeof值與指標所指的物件沒有任何關係 

(8) 陣列的sizeof值等於陣列所占用的記憶體位元組數, 注意,是記憶體位元組數

(9) 陣列作為引數時,會退化為指標

(10) sizeof時要注意位元組對齊 

(11) 結構體的總大小為結構體最寬基本型別成員大小的整數倍

(12) 結構體的大小等於最後乙個成員的偏移量加上其大小再加上末尾的填充位元組數目 

(13) 整個聯合體的sizeof也就是每個成員sizeof的最大值 

一些概念理解(持續更新)

分布式 不同的業務模組部署在不同的伺服器上或者同乙個業務模組分拆多個子業務,部署在不同的伺服器上,解決高併發的問題 集群 同乙個業務部署在多台機器上,提高系統可用性 通俗易懂的小例子 小飯店原來只有乙個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房乙個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的...

一些C 概念辨析

const與指標的結合方式有時候令人迷惑,如 int a0 int const a1 int const a2 const int a3 int const const a4 const int const a5 const int const const a6 相比於乙個裸指標 a0,const ...

關於C 多型的一些概念和理解

概括 乙個介面,多種方法 程式在執行時才決定呼叫的函式 實現 通過虛函式實現,虛函式允許子類重新定義成員函式,而子類重新定義父類的做法成為遮蔽或重寫 重寫分為兩種,重寫成員函式和重寫虛函式,只有重寫虛函式才能體現c 的多型 而過載並沒有體現多型性 這裡簡單概括下過載 過載允許允許多個同名的函式,而這...