[學習筆記]C++ Primer[第二章]基本語言
Page 30 ( Chapter 2 基本語言) |
算術類型的存儲空間依機器而定。 |
Page 30 ( Chapter 2 基本語言) |
表示整數、字符和布爾值的算術類型合稱為整形(integral type) 字符類型有兩種:char和wchar_t。char類型通常是單個機器字節(byte)。wchar_t類型用于擴展字符集,比如漢字和日語 |
Page 31 ( Chapter 2 基本語言) |
在位這一級上,存儲器是沒有結構和意義的。 讓存儲具有結構的最基本方法是用塊(chunk)處理存儲。……雖然確切的大小因機器不同而不同,但是通常將8位的塊作為一個字節,32位或4個字節作為一個“字(word)” |
Page 32 ( Chapter 2 基本語言) |
C++標準并未定義signed類型如何用位來表示,而是由每個編譯器自由決定如何表示signed類型。……符號位為1,值就為負數;符號位為0,值就為0或正數。……有些語言中將負數賦給unsigned類型是非法的,但在C++中這是合法的。 |
Page 35 ( Chapter 2 基本語言) |
為了兼容C語言,C++中所有的字符串字面值都由編譯器自動在末尾添加一個空字符。 |
Page 36 ( Chapter 2 基本語言) |
兩個相鄰的僅由空格、制表符或換行符分開的字符串字面值(或寬字符串字面值),可連接成一個新字符串字面值。 //concatenated long string literal std::cout<<"a multi-line " "string literal " "using concatenation " <<std::endl; 執行這條語句將會輸出: a multi-line string literal using concatenation 如果連接字符串字面值和寬字符串字面值,將會出現什么結果呢?例如: //Concatenating plain and wide character strings is undefined std::cout<<"multi-line" L"literal "<<std::endl; 其結果未定義的(unsigned),也就是說,連接不同類型的行為標準沒有定義。這個程序可能會執行,也可能會崩潰或者產生沒有用的值,而且在不同的編譯器下程序的動作可能不同。 |
Page 36 ( Chapter 2 基本語言) |
在一行的末尾加一反斜線符號可將此行和下一行當作同一行處理。 std::cou\ t<<"Hi"<<st\ d::endl; 等價于 std::cout<<"Hi"<<std::endl; 注意反斜線符號必須是該行的尾字符——不允許其后面有注釋或空格。同樣,后繼行行首的任何空格和制表符都是字符串字面值的一部分。正因如此,長字符串字面值的后繼行才不會有正常的縮進。 |
Page 39 ( Chapter 2 基本語言) |
C++是一門靜態類型語言,在編譯時會作類型檢查。 |
Page 41 ( Chapter 2 基本語言) |
標識符不能包含兩個連續的下劃線,也不能以下劃線開頭后面緊跟一個大寫字母。有些標識符(在函數外定義的標識符)不能以下劃線開頭。 |
Page 42 ( Chapter 2 基本語言) |
C++支持兩種初始化變量的形式:復制初始化(copy-initialization)和直接初始化(direct-initialization)。復制初始化語法用等號(=),直接初始化則是把初始化式放在括號中: int ival(1024); //direct-initialization int ival = 1024; //copy-initialization |
Page 43 ( Chapter 2 基本語言) |
也可以通過一個計數器和一個字符初始化string對象。這樣創建的對象包含重復多次的指定字符,重復次數由計數器指定: std::string all_nines(10,'9'); //all_nines="9999999999" 本例中,初始化all_nines的唯一方法是直接初始化。有多個初始化式時不能使用復制初始化 |
Page 44 ( Chapter 2 基本語言) |
內置類型變量是否自動初始化取決于變量定義的位置。在函數體外定義的變量都初始化成0,在函數體里定義的內置類型變量不進行自動初始化。 |
Page 46 ( Chapter 2 基本語言) |
extern聲明不是定義,也不分配存儲空間。 …… 只有當extern聲明位于函數外部時,才可以含有初始化式。 |
Page 50 ( Chapter 2 基本語言) |
非const變量默認為extern,要使const變量能夠在其他的文件中訪問,必須顯式地指定它為extern |
Page 51 ( Chapter 2 基本語言) |
引用只是對象的另一個名字 |
Page 52 ( Chapter 2 基本語言) |
const引用可以初始化為不同類型的對象或者初始化為右值 …… 非const引用只能綁定到與該引用同類型的對象。 const引用則可以綁定到不同但相關的類型的對象或綁定到右值。 |
Page 56-57 ( Chapter 2 基本語言) |
如果使用class關鍵字來定義類,那么定義在第一個訪問標號前的任何成員都隱式指定為private;如果使用struct關鍵字,那么這些成員都是public。使用class還是struct關鍵字來定義類,僅僅影響默認的初始化訪問級別。 可以等效地定義Sales_item類為: struct Sales_item{ //no need for public label, memebers are public by default //operations on Sales_item objects private: std::string isbn; unsigned units_sold; double revenues }; 本例的類定義和前面的類定義只有兩個區別:這里使用了關鍵字struct,并且沒有在花括號后使用關鍵字public。struct的成員都是public,除非有其他特殊的聲明,所以就沒有必要添加public標號。 用class和struct關鍵字定義類的唯一差別在于默認訪問級別:默認情況下,struct的成員為public,而class的成員為private。 |
Page 59 ( Chapter 2 基本語言) |
這種行為有一個很重要的含義:當我們在頭文件中定義了const變量后,每個包含該頭文件的源文件都有了自己的const變量,其名稱和值都一樣。 |
posted on 2007-06-16 01:32 volnet 閱讀(1011) 評論(2) 編輯 收藏 引用 所屬分類: C++ Primer 學習筆記