標籤:最大 標頭檔 back 檔案訪問 第一個 私人 標識 sign span
C++
1.< >表示包含來自標準庫的標頭檔,對於不屬於標準庫的標頭檔則用雙引號” ”;
2.複合類型的聲明:int* p1,p2;//p1是指向int的指標,p2是int;
3.decltype類型指示符:如果decltype使用的運算式是一個變數,則decltype返回該變數的類型(包括頂層const和引用在內);decltype(s.size()) p=0;//p的類型和s.size的傳回型別一樣即string::size_type( 從邏輯上來講,size() 成員函數似乎應該返回整形數值,或是不帶正負號的整數。但事實上,size 操作返回的是 string::size_type 類型的值。
string 類類型和許多其他庫類型都定義了一些配套類型(companion type)。通過這些配套類型,庫類型的使用就能與機器無關(machine-independent)。size_type 就是這些配套類型中的一種。它定義為與 unsigned 型(unsigned int 或 unsigned long)具有相同的含義,而且可以保證足夠大能夠儲存任意 string 對象的長度。為了使用由 string 類型定義的 size_type 類型是由 string 類定義。任何儲存string的size操作結果的變數必須為string::size_type 類型。特別重要的是,不要把size的傳回值賦給一個 int 變數。
雖然我們不知道 string::size_type 的確切類型,但可以知道它是 unsigned 型。對於任意一種給定的資料類型,它的 unsigned 型所能表示的最大正數值比對應的 signed 型要大一倍。這個事實表明 size_type 儲存的 string 長度是 int 所能儲存的兩倍。
使用 int 變數的另一個問題是,有些機器上 int 變數的表示範圍太小,甚至無法儲存實際並不長的 string 對象。如在有 16 位 int 型的機器上,int 類型變數最大隻能表示 32767 個字元的 string 對象。而能容納一個檔案內容的 string 對象輕易就會超過這個數字。因此,為了避免溢出,儲存一個 stirng 對象 size 的最安全的方法就是使用標準庫類型 string::size_type。)
4.const:定義變數時給初始值,不能修改,唯讀形式;預設狀態下,const對象僅在檔案內有效,//對於const變數不管是聲明還是定義都添加extern關鍵字,這樣只需定義一次就可以了://extern const int bufSize=8;//該常量能被其他檔案訪問。
l auto:編譯器通過初始值自動推斷變數的類型
n 例如:auto val = val1 + val2;
如果val1+val2是int類型,則val是int類型;
如果val1+val2是double類型,則val是double類型。
5.類和對象:
class類名稱
{
public:
公有成員(外部介面)
private:
私人成員
protected:
保護型成員
};
從類外訪問成員使用“對象名.成員名”方式訪問public成員
*理解“引用”
*重載函數的主要好處:{功能類似的多個函數用同一個名字;
要求:參數的類型不同/參數的個數不同/參數的類型和個數都不同}
*建構函式:”=default”;預設建構函式
*class和struct關鍵字都可以定義類,區別在於預設存取權限不一樣。如果使用struct關鍵字,則定義在第一個訪問說明符之前的成員是public的;相反使用class關鍵字,則這些成員是private的。//例:
class Word
{
float mass;//private by default
char name[20];//private by default
Public:
void tee(void);
};
*update()成員函數的函數頭如下:
void Stock ::update(double price)
這種標記法意味著我們定義的update( )函數是Stock類的成員。這不僅將update( )標識為成員函數,還意味著我們可以將另一個類的成員函數也命名為update()。
*:面向行的輸入cin.getline(name,20);//使用getline將姓名讀入到一個包含20個元素的name數組中,分行符號結束,不包含分行符號。
Cin.get();//包含分行符號。
將兩個類成員函數拼接起來:下面的語句將把輸入中的連續兩行分別讀入到數組name1,name2中,其效果與兩次調用cin.getline()相同:
cin.getline(name1,20).getline(name2,20);//cin.getline()返回一個cin對象
*vector<string> v8{10,”hi”};//v8有10個值為hi的元素
(因為要想列表初始化vector對象,花括弧裡的值必須與元素類型相同,顯然不能用int初始化string對象,所以v7和v8提供的值不能作為元素的初始值。確認無法執行列表初始化後,編譯器會嘗試用預設值初始化vector對象)
*要想理解數組聲明的含義,最好的辦法是從數組的名字開始從右向左,有括弧先讀括弧裡的。
*size_t類型:是一種機器無關的無符號類型,它被設計的足夠大以便能表示記憶體中任意對象的大小。在cstddef標頭檔中定義了size_t類型,這個檔案是c標準庫stddef.h標頭檔的c++版本。在使用數組下標的時候,通常將其定義為size_t類型。
C++語言學習