C++中如何定義類和對象?


  在C++語言中,對象的類型被稱為類,類代表了某一批對象的共性和特征。

  類是對象的抽象,而對象是類的具體實例。如同C中的結構體一樣,我們要先定義一個結構體,再使用結構體去定義一個變量。同一個結構體可以定義出多個不同的結構體變量。我們要使用類也是如此。

  類是對象的模板,如同我們在建造房屋時候的圖紙,然后我們就可以利用這個圖紙去建造許多個房屋。我們可以使用別人已經定義好的類。更多的時候,我們要根據需要定義自己的類。

  定義類

  定義結構體的方法:

  struct Student

  {

  char name[128];

  int age;

  char add[128];

  };

  類的定義格式:

  class 類名

  {

  private : //成員訪問限制符

  成員數據;

  成員函數;

  public : //public設置之前的成員都是上面所設置的私有的

  成員數據;

  成員函數;

  protected:

  成員數據;

  成員函數;

  };

  類也是一種數據類型,它是一種我們自己定義的廣義的數據類型。

  private

  私有的,只能在類的內部訪問,類的外部不能訪問。

  protected

  受保護的,只能在類的內部訪問,類的外部不能訪問,還可以在它的派生類中訪問,派生類后面會詳細介紹。

  public

  公有的,類的外部和內部都可以訪問。

  一個類可以包含多個成員訪問限制符,每一個生效的范圍直到下一個限制符被設置,如果沒有被設置的話,默認為私有的。雖然同一個訪問限制符可以出現多次,但是為了代碼的簡潔,我們應當讓它們只出現一次。還有讓public的成員放在類的聲明前面。因為別人在觀看你的代碼的時候只會在意你的public成員,其它對外界隱藏的成員對於外界是沒有意義的。

  C++中新增了類這個關鍵字,依然保留了結構,只是將結構進行了擴展,使它也可以定義成員函數。與類不同的是,結構中未聲明訪問限制的時候就會默認為公有的。

  如下面這個print()函數在結構體中就是公有的,如果在類中沒有被聲明訪問限制就是私有的。

  定義對象

  class 類名 對象名;

  類名 對象名; //我們經常使用這種方法來創建一個對象

  類的成員函數

  類的成員函數也被稱為類的方法,它也是函數的一種,它和基本的函數是一樣的。它跟一般函數的區別只是它是一個類的成員,它是定義在類的內部的,同時它有訪問控制符。

  私有的成員函數只能在本類中被調用,將需要被外界調用的成員聲明為公有的,公有的成員函數就成了一個接口。如果我們只是希望一個函數在類的內部被其它函數所調用,我們就可以將它聲明為私有的,因為這樣的函數用來支持其它函數實現一些功能,我們稱這樣的函數為工具函數。

  我們也可以不用定義成員函數,但是這就體現不出類的作用,就相當於C的結構體了。

  下面我們通過一個實例來了解一下類的結構。

  在四號區域,我們創建了一個類的對象stu,並通過它調用了類的兩個公共的方法,私有和保護的方法在外界是不能被調用的。在一號區域,我們完成了print()函數的聲明和定義,但是getAge()函數僅僅只是聲明了,我們在三號區域當中,也就是類的外部定義了它。當我們在類的外部定義成員函數的時候,我們要在函數名前面加上類名和作用域限制符,它表示這個成員函數是屬於這個類的。二號區域中定義了一些私有的成員屬性。在類的內部進行成員函數的聲明,類的外部進行成員函數的定義,這是一個非常好的習慣。這樣使類的長度更加短,結構層次更加清晰,便於我們閱讀,而且有助於把類的聲明和實現分離,從類的定義體中,用戶只看到了類的原型,這對我們實現數據隱藏是有好處的。

  在類的內部進行聲明和實現的時候,編譯器自動的將這些函數定義為內聯函數。如print()函數。在類之外定義的函數默認就不是內聯函數,我們可以在定義函數的時候顯式的加上inline關鍵字使它變成內聯函數。如getAge()函數就可以在類外部定義的時候加上inline關鍵字聲明使它變為內聯函數。

 

原文鏈接:http://www.maiziedu.com/wiki/cplus/define/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM