繼承
派生類成員對基類成員的訪問能力。
在派生類構(gòu)建構(gòu)造函數(shù)和析構(gòu)函數(shù)時候需要注意。
基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被派生類繼承;
如果基類沒有定義構(gòu)造函數(shù),派生類也不能定義構(gòu)造函數(shù),都要采用默認構(gòu)造函數(shù)(由于編譯器對提供構(gòu)造函數(shù)有條件,那么在這種情況下,啥都別干就行了)。
如果基類定義了帶參數(shù)的構(gòu)造函數(shù),那么派生類要定義性的構(gòu)造函數(shù),提供一個將參數(shù)傳遞給基類構(gòu)造函數(shù)的途徑。
如果派生類的基類也是派生類,每個派生類只負責直接基類的構(gòu)。
派生類是否要定義析構(gòu)函數(shù)和所屬的基類無關(guān)。
基類和派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序如下:
基類的構(gòu)造函數(shù);
派生類的構(gòu)造函數(shù);
派生類的析構(gòu)函數(shù);
基類的析構(gòu)函數(shù);
虛函數(shù)與多態(tài)性、純虛函數(shù)。
用virtual關(guān)鍵字申明(定義)的函數(shù)叫做虛函數(shù),在基類的函數(shù)前面加上virtual關(guān)鍵字,在派生類中重寫該函數(shù),運行時會根據(jù)對象的實際類型來調(diào)用相應(yīng)的函數(shù),這就是c++的多態(tài)性,在基類中定義一個統(tǒng)一的接口函數(shù),在不同的派生類中重寫該函數(shù),實現(xiàn)不同的功能。
純虛函數(shù)是指被標明為不具體實現(xiàn)的虛成員函數(shù),凡是有純虛函數(shù)的類叫做抽象類。抽象類不能聲明對象,只能作為基類為派生類服務(wù),派生類必須完全實現(xiàn)基類的純虛函數(shù),否則派生類也會變成抽象類。
Virtual void functionName()=0;//純虛函數(shù)
函數(shù)的覆蓋與隱藏;
構(gòu)成覆蓋的條件;
基類函數(shù)必須是虛函數(shù);
發(fā)生覆蓋的2個函數(shù)必須分別處于基類和派生類中;
函數(shù)名稱與參數(shù)列表必須完全相同(是不是返回值類型也必須相同?)
構(gòu)成隱藏的條件;
基類和派生類的函數(shù)完全相同,基類沒有使用virtual關(guān)鍵字;
基類和派生類的函數(shù)名相同,參數(shù)不同,此時不管基類函數(shù)是否使用virtual關(guān)鍵字,基類的函數(shù)都被隱藏。
函數(shù)重載發(fā)生在同一個類中,覆蓋和隱藏發(fā)生在基類和派生類關(guān)系中。
引用
偶然的機會看到了《Effective C++》中關(guān)于引用的建議,對于不需要修改原值的引用,使用引用時盡量加上const關(guān)鍵字,避免對原值造成修改(記不大清楚了,大概是這樣)。
引用的定義:int &a=b;
看到一個小程序,不引入第三個變量,交換2個變量的值。
void change(int& a,int& b)
{
a=a+b;
b-a-b;
a=a-b;
}//有一面試的時候被問到了,當時沒答出來
VC++程序編譯鏈接的原理和過程。
有點小復(fù)雜,一時間理解不了,有空慢慢研究。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |