1. 程式人生 > 實用技巧 >leetcode 劍指offer 9 用兩個棧實現佇列

leetcode 劍指offer 9 用兩個棧實現佇列

技術標籤:C++學習面向物件程式設計c++

C++類和物件

類是面向物件程式設計OOP實現訊息封裝的基礎。 類是現實世界在計算機中的反映,它將資料和對這些資料的操作封裝在一起, 即具有相同結構,操作,使用約束規則在一起的物件集合在一起,就成為類,類是對物件的抽象。而物件是對類的具體體現。 類的實質是一種引用資料型別,只是這個資料型別比較複雜,類是一個抽象的概念,不能直接操作。只有例項化為物件,才能被操作。這就好比是一個抽象的概念(你難道能開一個邏輯概念的車?),但是紅旗轎車跟長安轎車是它的例項化的物件,是可以直接進行操作的

  1. 類的結構

    • 類名
    • 資料元素
    • 成員函式
    //以下是典型的類的結構
    class Car { //類名
    public : //許可權:公有
       Car() {  } //成員函式
       void set(float price, string __name);
    private ://許可權:私有
        float price;//資料元素
        string __name;
    };
    
  2. 類的特性

    • 封裝性

      ​ 將資料和操作封裝為一個有機的整體,由於類中私有成員都是隱藏的,只向外部提供有限的介面,所以能夠保證內部的高內聚性和與外部的低耦合性。用者不必瞭解具體的實現細節,而只是要通過外部介面,以特定的訪問許可權來使用類的成員,能夠增強安全性和簡化程式設計。

    • 繼承性

      ​ 繼承性更符合認知規律,使程式更易於理解,同時節省不必要的重複程式碼。

    • 多型性

      ​ 同一操作作用於不同物件,可以有不同的解釋,產生不同的執行結果。在執行時,可以通過指向父類(基類)的指標,來呼叫實現子類(派生類)中的方法。


  • 物件

物件可以是一個變數,可以是一個數據結構,或者一個函式。 在電腦科學中,物件

(object),是一個儲存器地址,其中擁有值,這個地址可能有識別符號指向此處。 在上文中的紅旗轎車,長安轎車就可以算是物件。簡言之,物件是類的例項,真正的佔有記憶體空間的,實實在在的東西。物件是根據類來建立的。宣告類的物件,就跟宣告基本型別的變數一樣

//基於上面程式碼的物件
void Car::set(float price, string __name) {
    price = 123456.789;
    __name = "HongQi";
}

//與基本型別宣告變數類比
Car car;//宣告類的物件
int i; //基本型別的宣告

  • 總結

類和物件,簡單來說就是邏輯抽象與物理實際的關係,一個是抽象事物,是邏輯上的集合,不能進行操作。一個是物理事物,具有實實在在的記憶體空間,可以進行操作。以下圖片雖然有失偏頗,但是理解類與物件還是可以的。

類與物件簡單舉例