今天邊看 C++ Primer 邊複習關於C++的內容,由於大一的時候剛開始學軟件設計的是C,而後下學期在軟件設計二課上學面向對象才轉到C++,因此發現對於C++的一些基本問題認識不夠。curl
指針是對象,而引用不是,因此有指向指針的指針而沒有引用的引用,也沒有指向引用的指針,指針要麼指向一個對象,要麼是空指針,要麼是未定義指針,由於指針是對象,因此適用於對象的概念如做用域、初始化都適用於指針。url
空指針不指向任何對象設計
int *ptr = nullptr; int *ptr = 0; int *ptr = NULL;
第一種定義方式是 C++11 中新加進去的,第三種中的 NULL 是一個常量預處理變量(宏),喜歡第一種,由於有更純的類型的概念在裏面。指針
What exactly is nullptr?
C/C++ 中 0 與 NULL 區別是什麼?用 delete 時,用 p=0,仍是用 p=NULL 好?爲何?code
初始化不是賦值。若是不進行初始化,變量定義出如今不一樣的位置,產生的效果是不同的。C++11 中爲每個對象都加入了初始化列表的初始化方式,但要注意的是下面第三行這種狀況是編譯不過的:對象
double fromDouble = { 66.98 }; int toInt = fromDouble; // int toIntWrong{ fromDouble };
一樣是prefer用初始化列表的方式進行初始化。作用域
Why is list initialization (using curly braces) better than the alternatives?get
這個概念以前一直都是模模糊糊的,理解 literal 英文就行了。it