C++ primer 閱讀筆記------------變量

該博客用於記錄自己在閱讀過程中不懂的知識點,很少用到但比較重要的知識點以及模棱兩可的知識點
extern int j;  //聲明 j(未定義)
int j;           //聲明並定義
不能在函數體內部初始化一個extern標記的變量

多文件使用同一變量應在一個文件中定義多個文件中聲明


不能把int型變量直接賦給指針變量
引用不是變量所以不存在引用的引用

void 型的指針多是用於承載,而不是用於操作,因爲我們不清楚他的類型就無法確定如何操作他


**const(對給定類型的修飾!!!)
    編譯器在編譯過程中便將所有const變量都替換爲了對應的值
    默認情況下const便利了僅在文件內有效

    非常量引用不能綁定常量對象

    引用必須被初始化

    不允許通過const類型的引用修改對象
    當初始化常量引用使用表達式時,要求該表達式能轉換成引用的類型,如果發生轉化,引用綁定的實際上是一個臨時量(引用類型和引用對象類型必須一致的其中一個例外,如果引用不是常量引用的話,對引用的賦值事實上操作的是一個臨時量,而不是代碼中顯式綁定的對象, (指針同理))
*指向常量的指針:類型爲const double等,僅僅是不能通過指針修改所指對象的值,對象可以是非常量,用於存放常量對象的地址
*常量指針:例:int *const a,必須初始化且初始化後其存放的地址不能變
指針本身是常量稱爲頂層const(更一般的,任意對象是常量),指向的對象是常量稱爲底層const(與引用和指針等複合類型的 基本類型部分  有關)

常量表達式:值不會改變並且編譯過程就能確定的值
constexpr類型用於方便編譯器驗證某值是否三常量表達式
    constexpr int a = size();當size()是constexpr類型的函數時成立
使用constexpr的類型必須是字面值類型(算術類型,引用,指針(使用時應初始化爲0,nullptr或是存儲與固定地址的對象(定義在函數體之外的對象)))

typedef:類型別名
typedef char *pstring;     //pstring 是char類型的指針
const pstring a = 0;      //因爲pstring是指針類型,所以a是一個常量指針,不能想當然的理解爲const char* a(指向常量的指針),const是對給定類型的修飾!!!

auto讓編譯器分析表達式類型,必須有初始值
auto a = b + c;
decltype指示符
decltype((i)) 的結果永遠是引用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章