C Primer 閱讀筆記(1 2章)

2021-10-11 11:43:18 字數 2342 閱讀 9240

1 用istream物件作為條件時,其效果是檢驗流的狀態。如果流是有效的,即未遇到未知錯誤,那麼檢測成功。當遇到檔案結束符,或遇到乙個無效輸入時,istream的物件將會變成無效,處於無效狀態的istream物件會使條件變為假。

2:cerr:乙個ostream物件,寫入cerr的資料是不緩衝的,通常用於輸出錯誤資訊。

3:clog:乙個ostream物件,寫入clog的資料是緩衝的,用於報告程式的執行資訊,存入日誌文件。

4:基本資料型別:算數型別(整型(包括字元和布林),浮點型)和空型別;

5:float:六位有效數字;double:十位有效數字;

6:算術表示式中既有無符號數又有int值,int值轉換成無符號數;

7:\後跟八進位制數(1-3個數字) \7響鈴 \12換行符 \40空格符 \0空字元 \115 字元m \x4d字元 m

如果數字超過3個前三個數字與\構成轉義序列 \1234 表示兩個字元 \123和4

8:初始化不是賦值,初始化的含義是建立乙個變數時賦予乙個初始值,而賦值的含義是把物件的當前值擦掉,以另乙個值來替代;

9:分離式編譯:

宣告:使得名字為程式所知;定義:建立於名字相關聯的實體;

變數可以多次宣告,只能定義一次;

10:引用:

引用必須初始化,其必須為物件;

引用的資料型別必須跟其物件相同;

引用不是物件;

11:空指標:nullptr

12:兩個相同型別的合法指標,可以用==和!=比較,結果為布林型

13:void可以存放任意物件的位址,可以指向任意非常量的指標型別,不能解引用;

14:int * p,q; p是乙個指向int的指標, q是int型變數;

15:int i =42,int q;int* &r=q/r是指標q的引用;r=&i,*r=0; //要理解r的型別是什麼,從左到右閱讀r的定義,離變數名最近的符號對變數有最直接的影響;

16:const物件一旦創立其值就不能改變,所以 const物件必須初始化;

int j = 12;const int i = j;int t = i;(都是正確的)

17:不能讓乙個非常量引用指向乙個常量物件;

const int c = 12;int& r=c(錯誤);

int i=12;const int &r = i(允許const int& 綁到普通的int物件上)

18:常量指標和指標常量:

允許指向常量的指標指向非常量的物件:double dval=3.14;cptr=&dval(正確)

所謂指向常量的指標僅僅要求不能通過該指標改變物件的值;

頂層const:指標是乙個常量;

底層const:指標所指的物件是常量;

19:常量表示式是指值不會改變,在編譯過程中就能得到結果的表示式

c++11允許將變數宣告為constexpr型別以便來驗證變數值是否是乙個常量表示式;

constexp(宣告的constexpr一定為常量)r必須初始值為nullptr或0;僅對指標有效,與指標所指的物件無關;

20:型別別名:using l = iong

21:auto:型別說明符,auto讓編譯器通過初始值來推算變數的型別(auto定義的變數必須有初始值);

22:decltype(型別指示符):選擇並返回運算元的資料型別,它的作用是選擇並返回運算元的資料型別,只能得到型別,卻不實際計算表示式的值:

decltype(f()) sum = x(sum 的型別就是f()的返回型別);

編譯器不會呼叫f(),而是當呼叫發生時f的返回型別作為sum的型別;

如果decltype使用的表示式不是變數,則decltype則返回表示式結果對應的型別

*p解引用可以得到指標的物件

23:編寫自己的標頭檔案:類通常被定義在標頭檔案中,而且類所在的標頭檔案的名字與類名相同

標頭檔案保護符:#ifndef #endif;標頭檔案保護符必須唯

一、預處理變數名字大寫;

24:常量表示式:能在編譯時計算並獲得結果的表示式;

25:資料成員:組成物件的資料元素,類的每個物件都有資料成員的乙份拷貝,資料成員可以在類的內部同時初始化

26:字面值:不可改變的值;

c primer閱讀筆記 13章 1

1 複製建構函式 賦值操作符和析構函式總稱為複製控制。編譯器自動實現這些操作,但類也可以定義自己的版本。2 複製建構函式是一種特殊建構函式,具有單個形參,該形參 常用 const 修飾 是對該類型別的引用。當定義乙個新物件並用乙個同型別的物件對它進行初始化時,將顯式使用複製建構函式。當將該型別的物件...

c primer閱讀筆記 15章 1

1 物件導向程式設計基於三個基本概念 資料抽象 繼承和動態繫結。在 c 中,用類進行資料抽象,用類派生從乙個類繼承另乙個 派生類繼承基類的成員。動態繫結使編譯器能夠在執行時決定是使用基類中定義的函式還是派生類中定義的函式。15.1.物件導向程式設計 概述 1 物件導向程式設計的關鍵思想是多型性 po...

c primer閱讀筆記 15章 4

15.4.建構函式和複製控制 1 建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員。15.4.1.基類建構函式和複製控制 1 本身不是派生類的基類,其建構函式和複製控制基本上不受繼承影響。15.4.2.派生類建構函式 1 派生類的建構函式受繼承關係的影響,每個派生類建構函式除了...