1. 程式人生 > >C++ Primer 筆記——變量

C++ Primer 筆記——變量

關鍵字 com .html 3.1 extern double targe 不能 min

1. 初始化不是賦值,初始化的含義是創建變量時賦予其一個初始值,而賦值的含義是把對象的當前值擦除,而以一個新值來代替。

2.使用列表初始化內置類型的變量時,如果初始值存在丟失信息的風險,則編譯器將報錯。

int i{0.1};    // 錯誤


3.如果想聲明一個變量而非定義它,就在變量名前添加關鍵字extern,而且不要顯示的初始化它,任何包含了顯示初始化的聲明即成為定義。

extern int i;    // 聲明i而非定義i
int j;            // 聲明並定義j  
extern double pi = 3.14;    //定義,如果在函數體內試圖初始化一個extern變量將報錯


4.引用並非對象,相反的,它只是為一個已經存在的對象起的另外一個名字。

5.一旦引用的初始化完成,引用將和它的對象一直綁定在一起,所以引用在定義時必須初始化。

6.在支持C++ 11的情況下空指針最好使用nullptr,而盡量避免使用NULL。至於原因可以看如下鏈接:

http://www.cnblogs.com/zoneofmine/p/7224947.html

7.void* 是一種特殊的指針類型,可用於存放任意對象的地址,但是我們不知道這個地址中到底是個什麽類型的對象,所以也無法對這個對象做操作。

8.在定義多個變量的時候,類型修飾符(*或&)僅僅修飾最近的那個變量。

int* p1, p2;    // p1是int指針,p2是int

9.引用本身不是一個對象,所以不能定義指向引用的指針,也沒有引用的引用。

10.decltype的表達式如果是加上了括號的變量,結果將是引用。

int i = 0;
decltype((i)) a;    // 錯誤,a是int&,沒有初始化
decltype(i) b;        // 正確,b是一個int

C++ Primer 筆記——變量