基礎:
引數列表:c語言--->沒有引數:可傳可不傳
c++----->沒有引數:傳參會報錯,但是c++支援預設引數
注:預設引數一般放在函式的宣告位置,不可以在宣告和定義的地方同時出現預設值。
2、函式過載(靜態多型):
概念:在同一作用域內,含有幾個函式名相同,引數列表不同(引數的個數、型別、次序),與返回值無關的函式。
3、明名空間:解決明名衝突的問題。
沒有名稱的明名空間只能夠在當前檔案使用(檔案作用域)。
4、物件模型:物件中各個成員在記憶體裡面的布局。
物件裡面的成員函式、static成員儲存在物件的公共儲存區
物件的成員變數儲存在自己的空間裡面。
5、編譯器是如何識別乙個類的?
1、識別類名----->2、識別類裡面的成員變數----->識別類中的成員函式和static成員函式的
重寫(成員函式參列表還原this,改寫成員函式體,非靜態成員+this)。
6、this指標總結
高階:1、類裡面的六大預設成員函式:
性質:
解:建構函式是初始化成員的,const修飾的是this指標,當被const修飾的時候就無法更改,即無法初始化
初始化列表
什麼情況下編譯器合成建構函式?
概念:在建立物件的時候用已經存在的同型別的物件來初始化的一類特殊的建構函式。
引數要求:
單個引數
引數為類型別的引用
特徵:建構函式的過載
引數必須是類型別的引用
如果沒有顯示定義系統會自己合成乙個預設的拷貝建構函式。
注:如果拷貝建構函式的引數不是類型別物件的引用會怎樣?
解:如果引數直接是類型別的物件,那麼在函式傳參的時候就會拷貝構造乙份引數物件,那麼就會呼叫拷貝建構函式,這樣一直呼叫拷貝構造 函式,並且這個拷貝建構函式是沒有終止條件的。
概念:是一類特殊的函式,將同型別的物件作為引數來對自己進行賦值,返回值為該物件的引用的特殊函式。
返回值引數
前置++
物件的引用
無後置++
返回物件的值
int
三類過載輸出運算子:
需要成對過載的符號:
概念:析構函式是在物件被銷毀的時候由編譯器自己呼叫,完成一些資源清理和汕尾工作的特殊函式
特性:
delete
new
delete
注:在繼承裡面,派生類的構造需要先呼叫基類的建構函式對基類部分構造好,然後在呼叫派生類的建構函式對派生類的部分進行構造
基類的指標可以指向派生類
派生類指標不可以指向基類
派生類可以給基類賦值
基類不可以給派生類賦值
解:構造&拷貝構造&析構&賦值運算子過載
注:在菱形繼承裡面存在著二義性問題
菱形虛擬繼承的物件模型:
偏移量表裡面含有兩個值----->相對於自己的偏移量和相對基類的偏移量
偏移量表的模型:
注:使用虛擬繼承,必須是在單繼承裡面才可以使用。
實現多型的條件:
注:重寫:在繼承體系中,基類包含虛函式,如果在派生類裡面包含和基類裡面的虛函式型別完全相同的函式,那麼在派生類的虛表裡面在相同的位置替換基類的虛函式。
帶虛函式的菱形虛擬繼承的物件模型
總結:
問題:
解:在繼承體系裡面,假如基類的析構函式沒有定義成虛函式,那麼在使用基類來銷毀這個派生類的時候就會直銷會基類的部分,而派生類部分沒有銷毀。
解:不能 ,,虛函式通過虛表指標和虛表來完成呼叫,並且只能通過this指標來呼叫虛函式,那麼在靜態成員函式裡面不存在this,顯然就不能將靜態成員函式定於成虛函式。
解:不能,,友元函式並不是類的成員函式,那麼就無法通過this來呼叫,即不能夠將友元函式定義成虛函式。
C 學習總結
using system using system.collections.generic using system.text namespace helloworld class fraction class program console.writeline sum private static...
C 語法總結
1 const 與volatile 的用法 1 const include include 行引數指向const 型別變數的指標 void display c cons int pi 6 new 與delete 運算子 double pd define pointer variable pd new...
C 學習總結( )
1 based code 是為了向後相容用的。2 mfc提供的由cdialog派生的類 derived dialog class purpose ccolordialog 選擇顏色 cfiledialog 選擇檔名以開啟或儲存 cfindreplacedialog 查詢或替換對話方塊 cfontdi...