類描述了一組有相同特性(資料元素)和相同行為(函式)的物件。這是乙個非常廣泛的概念,萬事萬物都可以歸門別類。比如我們可以這樣定義人類:
上述人類的定義描述了人類具有什麼資料成員(屬性),以及什麼函式成員(行為、方法),如果給外星人發訊息告訴他們人類是什麼,不怕寒磣的話也可以傳送這份說明。#include
#include
using
namespace
std;
class humanelse
cout
<< age << "歲"
<< endl;
if(id.length() == 0)else
}
};
有了人類的定義,我們可以像定義整型變數x
int x;
一樣定義人類的物件(變數),這也稱為人類的例項化
這裡我們可以將物件名和成員名之間的「.」理解成「含有的」中」的」的意思。p.age
就是p的age成員,它是int型別的變數。因此我們賦給它整數。注意,p.introduce();
和q.introduce();
都呼叫了類human的introduce成員方法,但是由於呼叫物件分別是p和q,成員方法中name等成員資料也會分別是p和q各自不同的成員資料。
建立物件p後,要首先給該物件的資料成員賦值。上述**我們已經寫好一些值,也可以輸入值:
如果經常進行這樣的操作,我們可以將這些語句封裝為類的方法,不妨將該方法命名為readhuman p; // 定義人類物件p
cin >> p.name
;cin >> p.is_male;
cin >> p.age
;cin >> p.id
; p.introduce();
這樣,在使用p之前,可以呼叫read方法class human
};
使用圖形庫easyx,我們可以畫出很多基本圖形,如果將各個直線、矩形、圓等看成乙個個物件的話,顯然可以將所有直線可以看成一類,矩形、圓等也是。以圓為例:human p;
p.read();
p.introduce();
圓類物件c成員有值以後,我們可以直接呼叫圖形庫函式#include
class
circle
};int main()
circle(c.x, c.y, c.radius);
來畫出該圓,但是物件導向的方式是將與物件緊密相關的函式封裝到類中。因此,circle類中新增draw方法用來畫出該圓。
類的成員方法具體有哪些不是定死的,是根據應用背景靈活決定的。如果需要我們還可以加入erase、move等方法用來擦除、移動圓。
類的語法可參考類(classes)
本節介紹了類定義和物件建立,類的定義說明了物件有哪些屬性以及行為,相當於某種物件的「說明書」,而建立的物件相當於物件。
常見錯誤是:
類定義中
public:是設定成員的公有訪問許可權,這樣才在main函式中可以通過
物件名.成員名
的方式直接訪問它們。
c++還提供了建構函式和析構函式專門強化解決物件的資料成員的初值問題。
這兩塊知識點後面會專門講到。
類和物件封裝
屬性和行為 案例 設計學生類 訪問許可權 class 和 struct 的區別 成員屬性私有化 設計案例1 立方體類 設計案例2 點和圓關係 1 屬性和行為 includeusing namespace std const double pi 3.14 c 物件導向的三大特性 封裝 繼承 多型 萬事...
類和物件(封裝)
c 物件導向的三大特性 封裝,繼承,多型。c 認為萬物皆為物件,物件上由屬性和行為。具有相同性質的物件,我們可以抽象為類。封裝 將屬性和行為作為乙個整體,表現生活中的事物 將屬性和行為加以許可權控制。封裝意義一 在設計類的時候,屬性和行為寫在一起,表現事物 語法 class類名 類中的屬性和行為統一...
C 類和物件 封裝
c 物件導向三大特性 封裝 繼承 多型 將屬性和行為作為乙個整體,表現生活中的事物 將屬性和行為加以許可權控制 public 公共許可權 類內可以訪問,類外可以訪問 protected 保護許可權 類內可以訪問,類外不可以訪問 private 私有許可權 類內可以訪問,類外不可以訪問 在c 中str...