C++一些很基本的問題

今天邊看 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

相關文章
相關標籤/搜索