C++語言學習

來源:互聯網
上載者:User

標籤:最大   標頭檔   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++語言學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.