程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 類Class(一):class

類Class(一):class

編輯:C++入門知識

 

 

structures)的一個擴展概念。類()是一種將數據和函數組織在同一個結構裡的邏輯方法。其功能與C語言中的 struct 類似,不同之處是 可以, struct 。定義類的關鍵字為  或關鍵字  。

 

     class_name{

      access_specifier_1:

      

 

(access specifier)或(permission labels),范圍標志可以是以下三個關鍵字中任意一個:

 

  •  的 成員,只有 的其他成員或該 的“” 可以訪問這些成員。
  • : 的成員,只有同一個的其他成員,或該 的“” ,或該  的子類() 可以訪問這些成員。
  • :class 的 成員,該類的對象(object)無論在哪都可以訪問這些成員。

 

為 范圍。例如:

 

Rectangle{

width, height;

:

set_values(, );

area(void);

 

注意 class名稱與對象(object)名稱的不同:在上面的例子中,Rectangle 是class 名稱 (即用戶定義的類型名稱),而rect 是一個 Rectangle 類型的對象名稱。它們的區別就像下面例子中類型名 int和 變量名a 的區別一樣:

 

a;

 

.”(dot) 使用C structs一樣),來引用對象rect 的任何public成員,就像它們只是一般的函數或變量。例如:

 

 

 

 std;

 Rectangle {
     width, height;
  :
     set_values (, );
     area() { width*height;}
};

 Rectangle::set_values ( x,  y) {
  width = x;
  height = y;
}

 main () {
  Rectangle rect;
  rect.set_values (3,4);
  cout << "area: " << rect.area();
   0;
}

 

(雙冒號 )。它是用來在一個 class 之外定義該 class 的成員。注意,我們在Rectangle class 內部已經定義了函數 area() 的具體操作,因為這個函數非常簡單。而對函數 set_values() ,在 class 內部只是定義了它的原型(prototype),而其實現是在 class 之外定義的。這種在 class 之外定義其成員的情況必須使用。

() 聲明了被定義的成員所屬的 class 名稱,並賦予被定義成員適當的范圍屬性,這些范圍屬性與在 class 內部定義成員的屬性是一樣的。例如,在上面的例子中,我們在函數 set_values() 中引用了private 變量 width 和 height,這些變量只有在 class 內部和它的成員中才是可見的。

(參考inline的小知識) 考慮,而在第二種情況下,函數只是一般的class成員函數。在行為上相同,但在編譯器優化的可能性上不同。

的屬性是,它是一個,因此我們可以用它來定義多個不同對象(object)。例如,接著上面class Rectangle的例子,除了對象rect之外,我們還可以定義對象rectb :

 

 std;

 Rectangle {
     width, height;
  :
     set_values (, );
     area () { width*height;}
};

 Rectangle::set_values ( x,  y) {
  width = x;
  height = y;
}

 main () {
  Rectangle rect, rectb;
  rect.set_values (3,4);
  rectb.set_values (5,6);
  cout << "rect area: " << rect.area() << endl;
  cout << "rectb area: " << rectb.area() << endl;
   0;
}

 

注意: 調用函數 rect.area() 與調用 rectb.area()所得到的結果是不一樣的。這是因為每一個 class Rectangle 的對象都擁有它自己的變量 width 和 height,以及它自己的函數set_values() 和 area()。

(properties),而不是像以前在結構化編程 (structured programming) 中所認為的對象(object)是函數參數。我們在以後的內容裡慢慢討論面向對象的好處。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved