最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年10月16日 09:28:11   作者:錢書康  
本文是C++讀書筆記系列的第三篇,是讀完《C++ primer plus》一書第九、十兩章記錄下來的筆記,學(xué)習(xí)C++的同學(xué)可以看看參考下。

 第九章

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

 ?。?)、頭文件:  包含結(jié)構(gòu)聲明和使用這些結(jié)構(gòu)的原型。

  (2)、源代碼文件:  包含與結(jié)構(gòu)有關(guān)的函數(shù)的代碼。

 ?。?)、源代碼文件:  包含調(diào)用與結(jié)構(gòu)有關(guān)的函數(shù)的代碼。

2、頭文件——

 ?。?)、常包含的內(nèi)容:  函數(shù)原型;#define或const定義的符號(hào)常量;結(jié)構(gòu)聲明;類聲明;模板聲明;內(nèi)聯(lián)函數(shù)?! ?/p>

  (2)、若文件名包含在尖括號(hào)中,編譯器將在存儲(chǔ)標(biāo)準(zhǔn)頭文件的主機(jī)系統(tǒng)的文件系統(tǒng)中查找。

 ?。?)、若文件名包含在雙引號(hào)中,編譯器首先查找當(dāng)前的工作目錄或源代碼目錄,再在標(biāo)準(zhǔn)位置查找。

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

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

3、編譯過程——

 ?。?)、命令:  CC file1.cpp file2.cpp

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

  (3)、編譯器創(chuàng)建每個(gè)源代碼文件的目標(biāo)代碼文件:file1.o和file2.o

  (4)、鏈接程序?qū)⒛繕?biāo)代碼文件、庫代碼和啟動(dòng)代碼合并,生成可執(zhí)行文件:a.out

 ?。ㄗ⒁猓℃溄泳幾g模塊的時(shí)候,請(qǐng)確保所有對(duì)象文件和庫都是同一個(gè)編譯器生成的。)

4、存儲(chǔ)持續(xù)性——自動(dòng)存儲(chǔ)持續(xù)性、靜態(tài)存儲(chǔ)持續(xù)性、線程存儲(chǔ)持續(xù)性(C++11)、動(dòng)態(tài)存儲(chǔ)持續(xù)性。

5、?!獥V械臄?shù)據(jù)在相鄰的內(nèi)存單元中

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

  (2)、新值沒有被刪除,但不再被標(biāo)記。

6、鏈接性——

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

 ?。?)、內(nèi)部鏈接性,只能在當(dāng)前文件中訪問。如:  函數(shù)外,使用static定義的變量

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

 ?。ㄗ⒁?!所有的靜態(tài)變量都會(huì)首先被零初始化,然后再選擇動(dòng)態(tài)、靜態(tài)初始化。)

7、變量聲明——

  單定義規(guī)則 -> 變量只能有一次定義

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

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

 ?。ㄗ⒁?!要在多個(gè)文件中使用外部變量,應(yīng)在一個(gè)文件中定義,其他文件中使用extern聲明。)

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

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

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

9、說明符和限定符——

 ?。?)、關(guān)鍵字thread_local:  指出變量的持續(xù)性和其所屬的持續(xù)性相同。

  (2)、const:  內(nèi)存被初始化后,程序不能對(duì)它修改。const全局變量的鏈接性為內(nèi)部的。

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

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

10、函數(shù)的鏈接性——所有函數(shù)的存儲(chǔ)持續(xù)性都自動(dòng)為靜態(tài)的,鏈接性是外部的。可以使用static在原型和定義中將鏈接性設(shè)置為內(nèi)部的。

11、使用new初始化——

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

  (new找不到請(qǐng)求的內(nèi)存量、失敗時(shí),將引發(fā)異常std::bad_alloc)

 ?。?)、運(yùn)算符new實(shí)際上調(diào)用void * operator new ( std::size_t );

 ?。?)、運(yùn)算符new[] 實(shí)際上調(diào)用void * operator new[] ( std::size_t );  //這里std::size_t實(shí)際上是一個(gè)別名typedef,對(duì)應(yīng)合適的整型。

12、定位new運(yùn)算符——

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

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

13、名稱空間——

  相當(dāng)于Java中的package,不過也有很多不同。

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

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

 ?。?)、全局名稱空間,對(duì)應(yīng)文件級(jí)聲明區(qū)域,全局變量位于此處。

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

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

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

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

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

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

 第十章

15、類——

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

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

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

  (3)、定義位于類聲明中的函數(shù),自動(dòng)成為內(nèi)聯(lián)函數(shù)。

 ?。?)、也可以在類外使函數(shù)成為內(nèi)聯(lián)函數(shù),只需要在類實(shí)現(xiàn)中使用 inline 限定符,如:  inline void Stock::update(double price){}

 ?。?)、創(chuàng)建對(duì)象,如:  Stock a,b;  也可以使用new為對(duì)象分配存儲(chǔ)空間。如:  Stock a = new Stock;

 ?。?)、通過成員運(yùn)算符來使用成員函數(shù),如: a.show();  

  (7)、所創(chuàng)建的每一個(gè)對(duì)象都有自己的存儲(chǔ)空間,用于存儲(chǔ)其內(nèi)部變量和類成員;所有對(duì)象公用一組類方法。    

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

  不必在類聲明中使用關(guān)鍵字private,它是類的默認(rèn)訪問控制。

 ?。ㄗ⒁猓++中,結(jié)構(gòu)具有與類相同的特性,不過結(jié)構(gòu)的默認(rèn)訪問類型是public。)

17、類設(shè)計(jì)——

 ?。?)、提供類聲明。

 ?。?)、實(shí)現(xiàn)類成員函數(shù)。通常單獨(dú)提供函數(shù)定義,通過(::)來制定函數(shù)屬于哪個(gè)類。

18、類的構(gòu)造函數(shù)——

  專門用于構(gòu)造新對(duì)象、將值賦予它們的數(shù)據(jù)成員。

 ?。?)、構(gòu)造函數(shù)的原型和函數(shù)頭沒有返回值,而且沒有被聲明為void類型。構(gòu)造函數(shù)沒有聲明類型。

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

  ?。ǔR姷淖龇ㄊ窃跀?shù)據(jù)成員名使用m_前綴,或使用后綴_)

19、使用構(gòu)造函數(shù)——

  (1)、隱式調(diào)用:  Stock s( "a", 22, 1.2);  或  Stock a;

 ?。?)、顯式調(diào)用:  Stock s = Stock( "a", 22, 1.2);

  ?。ㄗ⒁猓瑯?gòu)造函數(shù)的其他特征與Java類似。)

20、析構(gòu)函數(shù)——對(duì)象過期時(shí),程序自動(dòng)調(diào)用的成員函數(shù),用以完成清理工作。如:  ~Stock();

  (注意!如果對(duì)象通過new創(chuàng)建的,使用delete釋放內(nèi)存時(shí),其析構(gòu)函數(shù)被自動(dòng)調(diào)用。)

21、對(duì)象賦值——默認(rèn)情況下,一個(gè)對(duì)象賦值給同類型的另一對(duì)象時(shí),會(huì)將源對(duì)象中每個(gè)數(shù)據(jù)成員的內(nèi)容復(fù)制給目標(biāo)對(duì)象。

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

 ?。?)、賦值方式:  s1 = Stock("a", 22, 1.2);  //總會(huì)在賦值前創(chuàng)建一個(gè)臨時(shí)變量。并且會(huì)自動(dòng)為臨時(shí)變量調(diào)用析構(gòu)函數(shù)。

22、const成員函數(shù)——確定不修改對(duì)象的類方法。const關(guān)鍵字放在函數(shù)括號(hào)后面,如:  void stock:: show() const;  

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

  而對(duì)于Stock c {};將匹配默認(rèn)構(gòu)造函數(shù)。

24、this指針——類方法中使用,this指針指向調(diào)用對(duì)象,為調(diào)用類方法的對(duì)象的地址。如需引用整個(gè)調(diào)用對(duì)象,可以使用*this。

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

    //這里首先使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建數(shù)組元素,然后花括號(hào)中的構(gòu)造函數(shù)創(chuàng)建臨時(shí)對(duì)象,然后臨時(shí)對(duì)象的內(nèi)容被復(fù)制到相應(yīng)元素中

  (注意!創(chuàng)建類對(duì)象數(shù)組,這個(gè)類必須有默認(rèn)構(gòu)造函數(shù)。)

26、作用域?yàn)轭惖某A俊?/p>

 ?。?)、類中聲明的枚舉,作用域?yàn)檎麄€(gè)類,不屬于對(duì)象,而是屬于類。

 ?。?)、使用關(guān)鍵字static修飾的常量將被放在靜態(tài)存儲(chǔ)區(qū)域,不屬于對(duì)象。

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

 ?。?)、枚舉量的作用域?yàn)轭?。需要用枚舉名類限定枚舉量。

 ?。?)、常規(guī)枚舉自動(dòng)轉(zhuǎn)換為整型,但作用域內(nèi)枚舉不能隱式轉(zhuǎn)換為整型。不過可以顯式轉(zhuǎn)換。

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

28、小結(jié)——

 ?。?)、類將數(shù)據(jù)和方法組合成一個(gè)單元,其私有性實(shí)現(xiàn)數(shù)據(jù)隱藏。類是用戶定義的類型,對(duì)象是類的實(shí)例。

 ?。?)、類聲明應(yīng)放在頭文件中,定義成員函數(shù)的源代碼應(yīng)放在方法文件中。

 ?。?)、每個(gè)對(duì)象都存儲(chǔ)自己的數(shù)據(jù)而共享類方法。

 ?。?)、抽象數(shù)據(jù)類型(Abstract Data Type)——ADT

相關(guān)文章

  • C語言代碼實(shí)現(xiàn)猜數(shù)字游戲

    C語言代碼實(shí)現(xiàn)猜數(shù)字游戲

    大家好,本篇文章主要講的是C語言代碼實(shí)現(xiàn)猜數(shù)字游戲,感興趣的同學(xué)趕快來看一看了吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C語言中二叉樹的后序遍歷詳解

    C語言中二叉樹的后序遍歷詳解

    大家好,本篇文章主要講的是C語言中二叉樹的后序遍歷詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C語言三子棋游戲的簡單設(shè)計(jì)

    C語言三子棋游戲的簡單設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語言三子棋游戲的簡單設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++中的 % 的含義說明

    C++中的 % 的含義說明

    很多朋友私信小編不理解C++中的 % 的含義,其實(shí)有兩種意思,一種是格式化字符串輸出另一種是整數(shù)取余,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2023-03-03
  • C++非遞歸隊(duì)列實(shí)現(xiàn)二叉樹的廣度優(yōu)先遍歷

    C++非遞歸隊(duì)列實(shí)現(xiàn)二叉樹的廣度優(yōu)先遍歷

    這篇文章主要介紹了C++非遞歸隊(duì)列實(shí)現(xiàn)二叉樹的廣度優(yōu)先遍歷,實(shí)例分析了遍歷二叉樹相關(guān)算法技巧,并附帶了兩個(gè)相關(guān)算法實(shí)例,需要的朋友可以參考下
    2015-07-07
  • C/C++讀寫文本文件、二進(jìn)制文件的方法

    C/C++讀寫文本文件、二進(jìn)制文件的方法

    今天小編就為大家分享一篇C/C++讀寫文本文件、二進(jìn)制文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • C++應(yīng)用Eigen庫對(duì)應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問題

    C++應(yīng)用Eigen庫對(duì)應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問題

    這篇文章主要介紹了C++應(yīng)用Eigen庫對(duì)應(yīng)實(shí)現(xiàn)matlab中部分函數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C++常對(duì)象精講_const關(guān)鍵字的用法

    C++常對(duì)象精講_const關(guān)鍵字的用法

    用const修飾的聲明數(shù)據(jù)成員稱為常數(shù)據(jù)成員。變量或?qū)ο蟊?const修飾后其值不能被更新。因此被const修飾的變量或?qū)ο蟊仨氁M(jìn)行初始化
    2013-10-10
  • C++跳轉(zhuǎn)語句之Goto對(duì)變量定義的影響詳解

    C++跳轉(zhuǎn)語句之Goto對(duì)變量定義的影響詳解

    goto語句也被稱為無條件轉(zhuǎn)移語句,這篇文章主要介紹了C++跳轉(zhuǎn)語句之Goto對(duì)變量定義的影響,文中通過示例代碼解文字介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • C++十六進(jìn)制宏的用法詳解

    C++十六進(jìn)制宏的用法詳解

    C++十六進(jìn)制宏的用法;本文將詳細(xì)介紹
    2012-11-11

最新評(píng)論

松江区| 岳阳县| 郧西县| 化州市| 渭源县| 高邮市| 商都县| 武宣县| 顺昌县| 龙井市| 大安市| 东乡县| 济阳县| 五大连池市| 安西县| 山东省| 建平县| 封开县| 兴文县| 望谟县| 临武县| 如皋市| 宁阳县| 上饶市| 教育| 怀宁县| 都兰县| 大关县| 凤庆县| 鄂托克旗| 沙河市| 修武县| 蓬莱市| 嘉荫县| 山东省| 浮山县| 洪湖市| 仪征市| 额尔古纳市| 本溪| 阳朔县|