C++學習筆記(From慕課網)。本站提示廣大學習愛好者:(C++學習筆記(From慕課網))文章只能為提供參考,不一定能成為您想要的結果。以下是C++學習筆記(From慕課網)正文
(慕課網視頻學習--C++離港篇的學習memo)
1: 函數的參數默許值,只能在最左邊。 假如有三個參數,只要兩頭一個有默許值,這是錯誤的。
函數聲明的時分寫默許值,定義的時分不要寫。(有些編譯器會出錯。)
2:內聯函數:編譯時,將函數體實參和代碼交換掉調用語句。
關聯字 inline
內聯函數是建議性的,由編譯器決議。
邏輯復雜,調用頻繁的建議運用內聯。
遞歸函數不能成為內聯函數。
3: 內存請求 new 內存釋放 delete 留意,釋放數組的時分,用 delete []p;
請求能夠失敗,
int *p = new int[100];
if(NULL == p){
//內存請求失敗
}
留意,釋放完內存後,再將相應的指針賦值為NULL;
4 string aaa = "Hello" + "world!"; // 這種定義是合法的,只能是常量+變量的方式。
5:類內定義的函數優先編譯成內聯函數!
------------------------------------------------------------------------------------
1: 結構函數 初始化列表
class Student{
public:
Student():name("Tom""), age(33){} //冒號掃尾,多個變量的話,逗號隔開。
private:
int age;
string name;
}
留意: 初始化列表先於結構函數執行。 而且只能用於結構函數。
常量只能用初始化列表初始化。
2: 拷貝結構函數。把一個對象賦值給另外一個對象時,自動調用拷貝結構函數。
假如沒有,則自動生成一個默許的拷貝結構函數。
3 析構函數 ~類名() 釋放內存等任務。
不允許有參數。不能重載。沒有前往值。沒有的話,會自動生成一個默許的。
------------------------------------------------------------------------------------
C++承繼的時分,子類和父類有同名函數的時分
就說,子類的函數隱藏了父類的函數。
比方,父類是Person,子類是Solider
隱藏的函數是play()
調用子類的函數 solider.play();
調用父類的函數 solider.Person::play();
留意: 就算子類的函數play加上參數,也必需用下面的方式調用父類的函數。
假如用父類指針指向子類對象,那麼父類的析構函數應該定義成虛函數。virtual
假如B,C 承繼A, D承繼B,C
這種就叫做菱形承繼,這個時分,A 需求再內存中只要一份。
B,C需求運用虛承繼。 如上面代碼:
class B: virtual public A{};
------------------------------------------------------------------------------------
C++承繼的時分,子類和父類有同名函數的時分
就說,子類的函數隱藏了父類的函數。
比方,父類是Person,子類是Solider
隱藏的函數是play()
調用子類的函數 solider.play();
調用父類的函數 solider.Person::play();
留意: 就算子類的函數play加上參數,也必需用下面的方式調用父類的函數。
假如用父類指針指向子類對象,那麼父類的析構函數應該定義成虛函數。virtual
C++中的籠統類是經過純虛函數來完成。