亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

《C++ primer plus》讀書筆記(三)

2020-01-26 15:13:53
字體:
來源:轉載
供稿:網友

 第九章

1、C++程序的組成――

 ?。?)、頭文件:  包含結構聲明和使用這些結構的原型。

  (2)、源代碼文件:  包含與結構有關的函數的代碼。

  (3)、源代碼文件:  包含調用與結構有關的函數的代碼。

2、頭文件――

 ?。?)、常包含的內容:  函數原型;#define或const定義的符號常量;結構聲明;類聲明;模板聲明;內聯函數。  

 ?。?)、若文件名包含在尖括號中,編譯器將在存儲標準頭文件的主機系統的文件系統中查找。

 ?。?)、若文件名包含在雙引號中,編譯器首先查找當前的工作目錄或源代碼目錄,再在標準位置查找。

 ?。?)、同一個文件中只能將同一個頭文件包含一次。用來忽略除第一次包含之外的所有內容。

  頭文件coordin.h中,常使用:  #ifndef COORDIN_H_  define  COORDIN_H_  /*頭文件內容*/  #endif

3、編譯過程――

  (1)、命令:  CC file1.cpp file2.cpp

  (2)、預處理器將包含的文件(頭文件之類的)和源代碼合并。生成臨時文件temp1.cpp和temp2.cpp

 ?。?)、編譯器創建每個源代碼文件的目標代碼文件:file1.o和file2.o

 ?。?)、鏈接程序將目標代碼文件、庫代碼和啟動代碼合并,生成可執行文件:a.out

 ?。ㄗ⒁?!鏈接編譯模塊的時候,請確保所有對象文件和庫都是同一個編譯器生成的。)

4、存儲持續性――自動存儲持續性、靜態存儲持續性、線程存儲持續性(C++11)、動態存儲持續性。

5、棧――棧中的數據在相鄰的內存單元中

 ?。?)、使用2個指針跟蹤棧,一個指向棧底(棧的開始位置),一個指向棧頂(下一個可用內存單元)

 ?。?)、新值沒有被刪除,但不再被標記。

6、鏈接性――

  (1)、外部鏈接性,可在其他文件中訪問。如:  函數外,不使用staitic定義的變量

  (2)、內部鏈接性,只能在當前文件中訪問。如:  函數外,使用static定義的變量

 ?。?)、無鏈接性,只能在當前函數或代碼塊中訪問。如:  代碼塊中定義的變量  

 ?。ㄗ⒁?!所有的靜態變量都會首先被零初始化,然后再選擇動態、靜態初始化。)

7、變量聲明――

  單定義規則 -> 變量只能有一次定義

 ?。?)、定義聲明(定義):給變量分配存儲空間。

  (2)、引用聲明(聲明):不分配空間,引用已有的變量。使用關鍵字extern,且不進行初始化。

  (注意!要在多個文件中使用外部變量,應在一個文件中定義,其他文件中使用extern聲明。)

 ?。ㄊ褂胑xtern可以覆蓋變量默認的內部鏈接性,使其變成外部的)

8、const char * const a[12] = { “a”,"b","c"... };  // 第一個const防止字符串被修改,第二個const確保數組中每個指針指向它最初指向的字符串。

   這個指針的類型是 char * [12],即char類型的指針的數組,數組大小為12。第一個const修飾char *,第二個const修飾a[12]。所以。

9、說明符和限定符――

 ?。?)、關鍵字thread_local:  指出變量的持續性和其所屬的持續性相同。

 ?。?)、const:  內存被初始化后,程序不能對它修改。const全局變量的鏈接性為內部的。

 ?。?)、volatile:  每次都取值,不允許取值優化。

 ?。?)、mutable:  即使結構(或類)變量為const,某個被mutable修飾的成員也可以被修改。

10、函數的鏈接性――所有函數的存儲持續性都自動為靜態的,鏈接性是外部的。可以使用static在原型和定義中將鏈接性設置為內部的。

11、使用new初始化――

   int a = new int(5);  //設置a的值為5. 比較之下,大括號初始化更方便和通用。

  (new找不到請求的內存量、失敗時,將引發異常std::bad_alloc)

 ?。?)、運算符new實際上調用void * operator new ( std::size_t );

 ?。?)、運算符new[] 實際上調用void * operator new[] ( std::size_t );  //這里std::size_t實際上是一個別名typedef,對應合適的整型。

12、定位new運算符――

  能指定要使用的內存位置。不跟蹤哪些內存單元未使用,也不查找未使用的內存塊。

 ?。?)如:#include <new>  char buffer[50];  struct1 * s = new (buffer) struct1;  //從buffer中分配struct1大小的內存。

13、名稱空間――

  相當于Java中的package,不過也有很多不同。

 ?。?)、名稱空間可以是全局的,也可以位于另一個名稱空間中。

  (2)、默認情況下,名稱空間中聲明的名稱的鏈接性是外部的。

 ?。?)、全局名稱空間,對應文件級聲明區域,全局變量位于此處。

  (4)、名稱空間是開放的,即可以將某些名稱添加到已有的名稱空間中,如:  namespace qsk { char * name(const char* ); }  //將這個名稱添加到qsk中。

 ?。?)、通過作用域運算符來限定各名稱,如:  cout << qsk::name << endl;

14、using聲明和using編譯指令――

 ?。?)、using聲明使得特定的標識符可用。(無須限定名稱,直接使用)如:  using std::cout;

 ?。?)、using編譯指令使得整個名稱空間可用。(多了一個namespace)如:  using namespace std;

 ?。ㄗ⒁?,不要在頭文件中使用using編譯指令。對于using聲明,首選將其作用域設置為局部而不是全局。)

 第十章

15、類――

 ?。?)、類成員可以是數據也可以是函數。類聲明時,用訪問控制符來修飾。

 ?。?)、定義成員函數時,使用作用域解析運算符(::)來表示函數所屬的類。如  void Stock::update(double price){}

 ?。ㄋ梢栽L問類的私有成員)

 ?。?)、定義位于類聲明中的函數,自動成為內聯函數。

 ?。?)、也可以在類外使函數成為內聯函數,只需要在類實現中使用 inline 限定符,如:  inline void Stock::update(double price){}

 ?。?)、創建對象,如:  Stock a,b;  也可以使用new為對象分配存儲空間。如:  Stock a = new Stock;

  (6)、通過成員運算符來使用成員函數,如: a.show();  

 ?。?)、所創建的每一個對象都有自己的存儲空間,用于存儲其內部變量和類成員;所有對象公用一組類方法。    

16、訪問控制――private、public、protected

  不必在類聲明中使用關鍵字private,它是類的默認訪問控制。

  (注意!C++中,結構具有與類相同的特性,不過結構的默認訪問類型是public。)

17、類設計――

  (1)、提供類聲明。

  (2)、實現類成員函數。通常單獨提供函數定義,通過(::)來制定函數屬于哪個類。

18、類的構造函數――

  專門用于構造新對象、將值賦予它們的數據成員。

  (1)、構造函數的原型和函數頭沒有返回值,而且沒有被聲明為void類型。構造函數沒有聲明類型。

 ?。?)、構造函數的參數表示的不是類成員,而是賦予他們的值,因此參數名不能與類成員相同。(與Java不同)

  ?。ǔR姷淖龇ㄊ窃跀祿蓡T名使用m_前綴,或使用后綴_)

19、使用構造函數――

 ?。?)、隱式調用:  Stock s( "a", 22, 1.2);  或  Stock a;

  (2)、顯式調用:  Stock s = Stock( "a", 22, 1.2);

   (注意,構造函數的其他特征與Java類似。)

20、析構函數――對象過期時,程序自動調用的成員函數,用以完成清理工作。如:  ~Stock();

  (注意!如果對象通過new創建的,使用delete釋放內存時,其析構函數被自動調用。)

21、對象賦值――默認情況下,一個對象賦值給同類型的另一對象時,會將源對象中每個數據成員的內容復制給目標對象。

 ?。?)、初始化方式:  Stock s = Stock("a", 22, 1.2);  //可能創建臨時變量。

 ?。?)、賦值方式:  s1 = Stock("a", 22, 1.2);  //總會在賦值前創建一個臨時變量。并且會自動為臨時變量調用析構函數。

22、const成員函數――確定不修改對象的類方法。const關鍵字放在函數括號后面,如:  void stock:: show() const;  

23、C++11列表初始化――對于Stock jock {"abcd"}將匹配Stock::Stock(const std::string & co, long n = 0,double pr = 0.0);

  而對于Stock c {};將匹配默認構造函數。

24、this指針――類方法中使用,this指針指向調用對象,為調用類方法的對象的地址。如需引用整個調用對象,可以使用*this。

25、對象數組――如:  Stock s[4] = {Stock("a", 22, 1.2), Stock(), Stock("a", 22, 1.2)};

    //這里首先使用默認構造函數創建數組元素,然后花括號中的構造函數創建臨時對象,然后臨時對象的內容被復制到相應元素中

 ?。ㄗ⒁?!創建類對象數組,這個類必須有默認構造函數。)

26、作用域為類的常量――

 ?。?)、類中聲明的枚舉,作用域為整個類,不屬于對象,而是屬于類。

 ?。?)、使用關鍵字static修飾的常量將被放在靜態存儲區域,不屬于對象。

 27、新枚舉――enum class 或 enum struct

 ?。?)、枚舉量的作用域為類。需要用枚舉名類限定枚舉量。

 ?。?)、常規枚舉自動轉換為整型,但作用域內枚舉不能隱式轉換為整型。不過可以顯式轉換。

 ?。?)、新枚舉的底層類型為int,不過也可以指定底層類型,如:  enum class : short pizza { a, b, c, d};

28、小結――

 ?。?)、類將數據和方法組合成一個單元,其私有性實現數據隱藏。類是用戶定義的類型,對象是類的實例。

  (2)、類聲明應放在頭文件中,定義成員函數的源代碼應放在方法文件中。

 ?。?)、每個對象都存儲自己的數據而共享類方法。

 ?。?)、抽象數據類型(Abstract Data Type)――ADT

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美情侣性视频| 亚洲欧美制服综合另类| 91丝袜美腿美女视频网站| 国产欧美日韩免费看aⅴ视频| 国产欧美精品在线播放| 91影院在线免费观看视频| 国产在线日韩在线| 51精品国产黑色丝袜高跟鞋| 亚洲电影天堂av| 成人黄色午夜影院| 欧美性猛交xxxx免费看| 亚洲视频在线观看网站| 日本a级片电影一区二区| 欧美另类极品videosbest最新版本| 亚洲色图在线观看| 欧美日韩国产123| 亚洲自拍小视频| 亚洲无亚洲人成网站77777| 黄色91在线观看| 97视频国产在线| 日韩精品中文字幕在线观看| 国产成人精品在线观看| 欧美大尺度电影在线观看| 国产精品久久久久久av福利软件| 国产精品白嫩美女在线观看| 国产欧美日韩视频| 日韩暖暖在线视频| 精品国产一区二区三区四区在线观看| 亚洲国产精品资源| 欧美人与性动交a欧美精品| 日本19禁啪啪免费观看www| 日韩亚洲成人av在线| 国产一区二区三区在线播放免费观看| 亚洲国产精品一区二区久| 欧美性猛交xxxxx免费看| 91精品国产91久久久久久吃药| 国产精品影院在线观看| 日本道色综合久久影院| 国产色婷婷国产综合在线理论片a| 国产精品国产三级国产专播精品人| 日韩中文字幕第一页| 精品国产福利在线| 久久精品久久精品亚洲人| 国产精品自产拍在线观看中文| 国产91精品黑色丝袜高跟鞋| 国产精品久久久久久婷婷天堂| 在线视频欧美性高潮| 国产精品吊钟奶在线| 日韩专区在线观看| 欧美激情一区二区三级高清视频| 日韩av免费一区| 亚洲r级在线观看| 欧美肥老妇视频| 成人免费午夜电影| 777午夜精品福利在线观看| 国产精品欧美久久久| 在线播放精品一区二区三区| 久久综合亚洲社区| 高清欧美性猛交xxxx黑人猛交| 久久艳片www.17c.com| 久久精品夜夜夜夜夜久久| 欧美一区三区三区高中清蜜桃| 国产精品高精视频免费| 久久精品视频播放| 1769国产精品| 亚洲一区二区三| 97视频在线观看免费| 亚洲午夜久久久久久久| 98午夜经典影视| 国外成人免费在线播放| 久久精品免费电影| 久久精品国产成人精品| 欧美精品情趣视频| 亚洲全黄一级网站| 日本精品久久中文字幕佐佐木| 国产成人一区二区三区| 亚洲欧美在线免费观看| 久久精品国产欧美激情| 亚洲第一页在线| 国产精品无av码在线观看| 精品国内自产拍在线观看| 国产精品高清在线| 亚洲日韩中文字幕在线播放| 国产视频999| 国产在线观看91精品一区| 疯狂做受xxxx高潮欧美日本| 成人性生交大片免费观看嘿嘿视频| 中文字幕久久亚洲| 国产精品自产拍在线观看中文| 亚洲精品日韩欧美| 亚洲久久久久久久久久| 亚洲变态欧美另类捆绑| 日韩精品免费在线视频观看| 92国产精品久久久久首页| 日韩精品免费在线播放| 成人做爰www免费看视频网站| 69av成年福利视频| 久久久亚洲精选| 成人一区二区电影| 久久久亚洲国产天美传媒修理工| 欧美中文字幕在线播放| 国产精品狠色婷| 成人信息集中地欧美| 91精品视频观看| 欧洲永久精品大片ww免费漫画| 久久久国产影院| 欧美精品精品精品精品免费| 91地址最新发布| 久久精品国产综合| 国产激情综合五月久久| 在线看日韩欧美| 91精品综合久久久久久五月天| 国产精品高潮在线| 亚洲人精选亚洲人成在线| 久久久久久亚洲精品| 精品调教chinesegay| 久久久在线视频| 国产欧美日韩视频| 在线视频中文亚洲| 亚洲丁香久久久| 中文在线不卡视频| www.xxxx精品| 国产精品国产福利国产秒拍| 4438全国亚洲精品在线观看视频| 亚洲综合一区二区不卡| 精品中文视频在线| 91在线免费观看网站| 久久久99免费视频| 亚洲欧美国产精品va在线观看| 成人伊人精品色xxxx视频| 亚洲欧美三级伦理| 亚洲国产女人aaa毛片在线| 久久天天躁狠狠躁夜夜躁| 国产精品女主播| 国产99久久久欧美黑人| 正在播放欧美视频| 欧美激情在线狂野欧美精品| 精品久久久久久久中文字幕| 精品动漫一区二区三区| 91在线高清免费观看| 国产v综合ⅴ日韩v欧美大片| 国产日产欧美a一级在线| www.久久色.com| 国产精品日韩一区| 国产精品久久一| 欧美黑人xxxx| 欧美激情a∨在线视频播放| 欧美性色视频在线| 亚洲第一天堂av| 精品久久久久久久久中文字幕| 成人综合国产精品| 国产成人综合一区二区三区| 色婷婷成人综合| 亚洲国产日韩欧美综合久久| 久久久国产精彩视频美女艺术照福利| 国产精品视频yy9099| 亚洲偷熟乱区亚洲香蕉av| 5566成人精品视频免费| 久久亚洲精品中文字幕冲田杏梨| 亚洲欧美制服另类日韩| 黄网动漫久久久| 久久精品99国产精品酒店日本| 国产精品爱啪在线线免费观看| 97精品国产97久久久久久|