C++ Primer備忘

第I部分 C++基礎(chǔ)

  1. cin和cout的箭頭方向cin指向變量,輸出指向cout
  2. /*和*/采用就近匹配原則,因此其中間不允許嵌套
  3. cerr:一個(gè)ostream對(duì)象,關(guān)聯(lián)到標(biāo)準(zhǔn)錯(cuò)誤,通常寫入與標(biāo)準(zhǔn)輸出相同的設(shè)備。默認(rèn)情況下,寫到cerr的數(shù)據(jù)是不緩沖的。cerr通常用于輸出錯(cuò)誤信息或其他不屬于正常邏輯的輸出內(nèi)容。
  4. clog 一個(gè)ostream對(duì)象,關(guān)聯(lián)到標(biāo)準(zhǔn)錯(cuò)誤。默認(rèn)情況下,寫到clog的數(shù)據(jù)是被緩沖的。clog通常用于報(bào)告程序的執(zhí)行信息,存入一個(gè)日志文件中。
  5. C++語(yǔ)言規(guī)定一個(gè)int至少和一個(gè)shor一樣大,一個(gè)long至少和一個(gè)int一樣大,一個(gè)long long至少和一個(gè)long一樣大。其中,數(shù)據(jù)類型long long是在C++ 11新定義的。
  6. 在一個(gè)算術(shù)表達(dá)式中使用布爾變量,則其結(jié)果是0或1。
  7. 不要混用帶符號(hào)類型與無符號(hào)類型,帶符號(hào)數(shù)會(huì)自動(dòng)轉(zhuǎn)化成為無符號(hào)數(shù)。
  8. C++規(guī)定的轉(zhuǎn)義字符包括\n換行 \t橫向制表符 \a報(bào)警(響鈴)符 \v縱向制表符 \b退格符 \"雙引號(hào) \\ 反斜杠 \?問號(hào) \'單引號(hào) \\反斜杠 \r 回車符 \f進(jìn)紙符
  9. 指定字面值類型:
前綴:u 表示unicode 16字符 char16_t,U表示unicode 32字符 char_32_t,L表示寬字符 wchar_t, u8表示UTF-8(僅用于字符串字面常量) char
整型字面后綴:u or U表示unsigned,l or L表示long,ll or LL表示long long
浮點(diǎn)型字面值:f or F 表示float, l or L表示 long double
  1. 指針聲明*和引用聲明&都只針對(duì)單個(gè)變量。對(duì)復(fù)合指針引用,最簡(jiǎn)單的辦法是從右向左閱讀。int * &r = p;表示r是對(duì)指針p的引用。
  2. const限定是防止通過該值修改變量。頂層const是針對(duì)值本身的限定,底層是針對(duì)值指向?qū)ο蟮南薅ā?/li>
  3. 默認(rèn)情況下,const僅在文件內(nèi)有效,例如const int bufSize = 512;(類似于宏)。多文件共享需要使用extern。
  4. 指針類型不匹配會(huì)報(bào)錯(cuò),而引用類型不匹配則會(huì)自動(dòng)轉(zhuǎn)化,臨時(shí)值引用。
int i = 0;
double *p = &i; //錯(cuò)誤
double dval = 3.14;
const int &ri = dval; //正確,綁定到了一個(gè)轉(zhuǎn)化過的臨時(shí)量上
  1. constexpr僅對(duì)指針有效,與指針?biāo)笇?duì)象無關(guān)。constexpr把指針對(duì)象設(shè)置成了頂層指針:
const int *p =  nullptr; //p是一個(gè)指向整數(shù)常量的指針
constexpr int *q = nullptr; //q是一個(gè)指向整數(shù)的常量指針
  1. typedef遇到復(fù)雜場(chǎng)景,不能直接替換成原來的樣子來理解,而是將其對(duì)應(yīng)復(fù)雜指針定義為了頂層const指針。
typedef char *pstring;
const pstring cstr = 0; // cstr是指向char的常量指針
const pstring *ps; // ps是一個(gè)指針,它的對(duì)象是指向char的常量指針。
const char *cstr = 0; // 是對(duì)const pstring cstr的錯(cuò)誤理解。不能直接替換展開。此處cstr是真想char常量的指針

16 auto在同一條定義語(yǔ)句中必須指向相同的數(shù)據(jù)類型。auto引用可保留底層const,無法保留頂層const

auto i = 0, *p = &i; //正確
auto sz = 0, pi = 3.14; //錯(cuò)誤
auto &h = 42; //不能為非常量引用綁定字面值
  1. 解引用對(duì)象是左值,因此decltype(解引用對(duì)象)是引用。decltype表達(dá)式如果是雙引號(hào),結(jié)果也將是引用。
int i = 42, *p = &i;
decltype(r + 0) b; //正確,加法結(jié)果是int,因此b是一個(gè)未初始化的int
decltype(*p) c; //錯(cuò)誤,c是int&,必須初始化
decltype((i)) d; // 錯(cuò)誤,d是int&,必須初始化
decltype(i) e; //正確,e是一個(gè)未初始化的int
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,655評(píng)論 1 51
  • Part1、基礎(chǔ)篇 變量和基本類型 void main()是錯(cuò)的 PS:如果想讓你的code可移植性更好,請(qǐng)一定要...
    rh_Jameson閱讀 2,496評(píng)論 6 38
  • 1. 基礎(chǔ)知識(shí) 高級(jí)語(yǔ)言:接近自然語(yǔ)言的編程語(yǔ)言 編譯器:將C++源程序代碼轉(zhuǎn)換為二進(jìn)制文件 運(yùn)行:操作系統(tǒng)讀取二...
    吃掉夏天的怪物閱讀 266評(píng)論 0 0
  • 2018年8月17日 22:14:16 title: C++PrimerPlus讀書筆記typora-root-u...
    _layty閱讀 255評(píng)論 0 0
  • 引用很容易與指針混淆,它們之間有三個(gè)主要的不同: 不存在空引用。引用必須連接到一塊合法的內(nèi)存。 一旦引用被初始化為...
    Amanda_Lhy閱讀 564評(píng)論 0 0

友情鏈接更多精彩內(nèi)容