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

《C++ primer plus》念書筆記(二)

編輯:關於C++

《C++ primer plus》念書筆記(二)。本站提示廣大學習愛好者:(《C++ primer plus》念書筆記(二))文章只能為提供參考,不一定能成為您想要的結果。以下是《C++ primer plus》念書筆記(二)正文


第五章

1、for輪回——for(initialization; test-expression; update-expression) body  // test-expression 會被轉換為bool,0為false,非零為true

2、表達式——表達式是值或值與運算符的組合。賦值表達式的值為其左邊成員的值,而賦值運算符是從右到左聯合的。

3、a++和++a——

  (1)關於內置類型,兩種履行效力雷同。

  (2)若重載運算符,關於類而言,前綴將值加1,前往成果;後綴會復制一個正本,加1後前往正本。所之前綴比後綴效力高。

4、逗號運算符——

  (1)for輪回中,將多個表達式歸並為一個:  i++, j++;

  (2)聲明:  int i , j;

  (3)逗號表達式先盤算第一個表達式,再盤算第二個表達式。逗號表達式的值是第二部門的值。

  (4)逗號表達式是優先級最低的表達式。

5、strcmp()——比擬兩個字符串。接收2個字符串地址A、B作為參數。AB雷同前往0,A的字母次序在B之前,者前往正數,不然前往負數。

  (用引號括起的字符串常量是其地址。)

6、clock()——前往法式開端履行後所用的體系時光。這個值除以CLOCKS_PER_SEC可以獲得秒數。

7、類型別號——#define AA char  // 用AA作為char的別號,一切的AA將被char替換

  或  typedef AA char

8、cin——cin.get()會疏忽空格和換行符。發送給cin的輸出會被緩沖。按下回車鍵,輸出的內容才會被發送給法式。

   cin.get(ch)會獲得每一個字符。其參數聲明為援用類型,所以函數可以修正其參數的值。

9、EOF——許多PC編程情況都將Ctrl+Z視為模仿的EOF,檢測到EOF以後,cin將兩位(eofbit和failbit)都設置為1。eof()和fail()用來檢查能否被設置。

  所以輪回期待輸出的前提可以如許設置:while( cin.fail() == false ) {} 或 whle( !cin.fail() ){} 或 while(cin){} 或 while( cin.get(ch) ){}

  (平日,EOF被界說為-1)

第六章

10、運算符——!運算符的優先級高於一切的關系運算符和算術運算符。

    邏輯AND運算符的優先級高於邏輯OR運算符。

    C++確保法式從左到右盤算邏輯表達式。

11、cctype——字符函數庫。如isalpha(ch)斷定字符是否是字母,是字母就前往非零,不然前往0。

12、文本IO——應用cin停止輸出時,法式將輸出看做一系列的字節,個中每一個字節被說明為字符編碼。

第七章

13、界說函數——

  (1)、無前往值:  void functionName(parameterList) {}

  (2)、有前往值:  typeName functionName(parameterList) {}

  (留意!前往值的類型不克不及是數組,可所以其他任何類型)

14、函數原型——

  (1)、函數原型能極年夜下降法式失足的概率、進步效力。

  (2)、函數原型不請求供給變量名,有類型列表就足夠了。

  (3)、括號為空與括號中應用void是等效的,不指定參數列表應應用省略號——void haha(...);

 15、函數和二維數組——指針的類型是指把指針聲明語句中的指針名字去失落所剩下的部門

  關於:  int data[3][4] = {{1,2,3,4},{5,6,7,8},{4,3,2,1}};  int total = sum(data,3);  sum的原型是甚麼?

  (1)、原型是:  int sum ( int (*a) [4] , int size);

  所以 int(*)[4]即,將這個指針指向int[4]。所以data的類型指向由4個int構成的數組的指針

  所以 int *a[4] 的類型是int * [4],這個指針指向int,總共有4個,即它是4個指向int指針構成的數組。

  (2)、函數界說:  int sum (int a[][4] ,int size);

  a[ r ][ c ] = *( *( a + r ) + c); 

16、遞歸——每一個遞歸挪用都創立本身的一套變量。

  (留意!C++不許可main()挪用本身。)

17、函數指針——

  (1)、函數地址:  函數的地址是存儲其機械說話代碼的內存的開端地址。假如think()是一個函數,那末think就是它的地址。

  (2)、聲明指針函數:  函數:double pam(int);  指針函數為: double (*pf)(int) = pam;  // pf是一個指向函數的指針。

第八章

18、編譯進程——編譯進程的終究產物是可履行法式(由一組機械說話指令構成)。

  運轉法式時,操作體系將這些指令載入到盤算機內存中,是以每條指令都有特定的內存地址。盤算機隨後慢慢履行這些指令。

19、函數挪用——履行到函數挪用指令時,法式將在函數挪用後,立刻存儲該指令的內存地址,並將函數參數復制到客棧,跳到標志函數終點的內存單位,

  履行函數代碼(或許還需將前往值放入存放器),然後跳回到地址被保留的指令處。

20、內聯函數——編譯器應用響應的函數代碼取代函數挪用。

  函數聲明前加上症結字inline,函數界說前加上症結字inline。平日將省略原型,原型處直接界說。

21、援用變量——重要用處是作函數的參數,函數將應用原始數據,而不是其正本。

  (1)、創立:  int rats ;  int & a = rats;

  (2)、援用必需在聲明時初始化,不克不及先聲明再初始化。也不克不及經由過程賦值來設置援用。

  (3)、援用一旦與某個變量聯系關系起來,就一向盡忠。

  (4)、若援用參數是const,若實參類型准確卻不是左值 或 類型不准確卻可以轉換成准確類型 時,將創立暫時變量。

  (5)、前往援用時,應防止前往函數終止時不再存在的內存單位援用。

22、左值——

  (1)、可被援用的數據對象。如變量、數組元素、構造成員、援用息爭除援用的指針等。

  (2)、非左值,包含字面常量和包括多項的表達式。

  (3)、慣例變量屬於可修正的左值,const變量屬於弗成修正的左值。

23、右值援用——可指向右值的援用,應用&&聲明。如:  double & rref = std::sqrt ( 26.00 ) ;


24、默許參數——經由過程函數原型設置函數參數默許值。

  (1)、必需從右到左添加默許值。

  (2)、實參依照從左到右的次序順次被賦值給形參,而不克不及跳過任何參數。

25、函數重載——參數列表(特點標)分歧,而函數名雷同的函數。

  (1)、類型援用和類型自己被視為統一個特點標。

  (2)、不克不及把const變量賦值給非const形參

26、稱號潤飾——依據函數原型中指定的形參類型對每一個函數名停止加密,用來跟蹤每個重載函數。

27、函數模板——相當於Java中的泛型

  (1)、聲明:  template <typename T> void Swap(T &a, T &b);  // typeName 可用 class 調換

  (2)、函數模板不克不及延長可履行法式,終究的代碼不包括任何模板,只包括了為法式生成的現實函數。

  (3)、普通將模板放在頭文件中。

28、顯式詳細化——詳細化的函數界說,婚配時,應用它而不是模板。

  (1)、非模板函數:  void swap( job &, job &);

  (2)、模板函數:  template <typeName T> void swap( T & ,T &);

  (3)、顯式詳細化:  template<> void swap<job>( job &, job &);  // swap<job>中job是可選的

  (4)、編譯器在選擇原型時:  非模板函數  >  顯式詳細化  >  模板函數

  (5)、顯式實例化:  template void swap<int> ( int, int);  // template後無<>

  (6)、隱式實例化:  關於模板函數,編譯器會經由過程對這個模板含數的援用生成一個含數的實例,這平日叫隱式實例化

29、decltype——decltype( expression ) var;  // 讓var的類型與expression一樣。

  (留意!若expression是一個函數挪用,var的類型與其前往值雷同。若expression是一個左值,var為指向其類型的援用)

30、後置前往類型——給函數指定前往類型。

  如:template<class T1, class T2>  auto gt( T1 x, T2 y) -> decltype( x + y ) {  ...  return x + y ;}

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