程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++學習筆記(From慕課網)

C++學習筆記(From慕課網)

編輯:關於C++

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++中的籠統類是經過純虛函數來完成。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved