一.類
1.概念:類是對具有相同屬性和行為的一組物件的抽象與統一描述。是使用者自定義的資料型別
(屬性以資料表示,行為通過函式實現)
c++中,類的名字就是使用者自定義的型別的名字。可以象使用基本型別那樣來使用它
2.格式:
class
類名——類名的首字母大寫
;(類的定義以分號結束,不可省略)
注:(1 .
資料成員私有化——只在類中可見
成員函式公有化——類中,類外均可見
(2.如果私有成員放在第一段,則可以省略關鍵字private
(3.類的任何成員都必須指定訪問屬性
類的訪問屬性有:
public
protected
private
(4.類的成員可以是其他類的物件(稱為類的組合),但不能以類自身的物件作為本類的成員,而類自身的指標和引用可以作為類的成員。
(5.在類的定義中不能對資料成員進行初始化
(6.類中的資料成員可以是c++語法規定的任意資料型別
3.成員函式
一般將成員函式宣告為函式原型,在類外具體實現成員函式。
類外定義格式:返回值型別
類名::
成員函式名
(參數列)
簡單成員函式可以在類中定義
成員函式重點是對資料成員做操作
二.物件
物件是類的例項或實體。類與物件的關係,如同c++基本資料型別和該型別的變數之間的關係。
格式:類名
物件名1
,物件名2,
…,物件名n;
注:(1.必須在定義了類之後,才可以定義類的物件。
(2.物件必須定義在主函式中
1. 物件成員的訪問包括:
圓點訪問形式:物件名
.公有成員
指標訪問形式:物件指標變數名
->
公有成員
例:
#includeusing namespace std;
class tclass
int main()
——是乙個空函式
預設析構函式若沒有顯式定義析構函式,則系統自動生成乙個預設形式的析構函式。
格式:類名
::~類名
(){}
1.建構函式:
建構函式名與類名相同
建構函式需定義兩個以上。乙個帶參的,跟著乙個不帶參的
建構函式只在建立物件是呼叫一次
—(1)—
利用建構函式建立物件的兩種方法
1 利用建構函式直接建立物件.其一般形式為:
類名物件名
[(實參表
)];這裡的「類名」與建構函式名相同,「實參表」是為建構函式提供的實際引數。
2利用建構函式建立物件時,通過指標和new來實現。其一般語法形式為:類名*
指標變數
= new
類名[(
實參表)];
例如:date *date1=new date(1998,4,28);
就建立了物件(*date1)。
—(2)—
建構函式初始化成員有兩種方法
1.使用建構函式的函式體進行初始化
class date
date(int dd, int mm)
}
date(intdd, int mm) }
2.
使用建構函式的初始化列表進行初始化格式:
funname(
引數列表
):成員名
1(形參名
1),成員名
2(形參名
2),成員名
n(形參名
n) 初始化列表
class date
date(intdd, int mm): d(dd),m(mm)
}
—(3)
—必須使用引數初始化列表對資料成員進行初始化的幾種情況
資料成員為常量
資料成員為引用型別
資料成員為沒有無參建構函式的類的物件
—(4)—類成員的初始化的順序
按照資料成員在類中的宣告順序進行初始化,與初始化成員列表中出現的順序無關—(
5)—建構函式的過載
class box;
box::box()
box::box(int h, int w,intl):height(h),width(w),length(l)
{}int box::volume()
int main();
—(7)—建構函式的呼叫
在生成物件時呼叫建構函式。(建構函式一般被定義為公有成員)
classperson
unsigned getage( )
private:
unsigned age;
};intmain()
;
在類外進行靜態資料成員的宣告
格式:型別
類名::
靜態資料成員
[=初始化值
];靜態成員
靜態成員函式
定義格式
static 型別名 靜態成員名
static 返回型別 靜態成員函式名(參數列);
訪問格式
公有訪問許可權的靜態成員
呼叫公有靜態成員函式
類名::靜態成員的名字
物件名.靜態成員名字
物件指標->靜態成員的名字
類名::靜態成員函式名(實參表)
物件. 靜態成員函式名(實參表)
物件指標->靜態成員函式名(實參表)
在靜態成員函式內部,直接訪問
3. 友元
在類體中用friend對其(函式b)進行宣告,此函式就稱為本類(類a)的友元函式
注:1.友元函式(函式b)可以訪問這個類(類a)中的私有成員
2.這個函式可以是不屬於任何類的非成員函式,也可以是其他類的成員函式
#include using namespace std;
class car;
class boat
friendvoid display_weight(boat &boat ,car &car);
};
十.類的包含(類的組合)
當乙個類中含有已經定義的類型別成員,帶引數的建構函式對資料成員初始化,須使用初始化語法形式
格式:建構函式
( 形參表
) :
物件成員1(
形參表) , …,
物件成員n (
形參表)
;十一.物件陣列
所謂物件陣列是指每一陣列元素都是物件的陣列。
格式 :類名
陣列名[
下標表示式
];物件陣列的初始化(無法通過初始化成員列表對物件陣列進行初始化)
1. 當物件陣列所屬的類中包含帶參的建構函式,可用初始化列表完成物件陣列的初始化2. 當物件陣列所屬的類中包含無參的建構函式,也可以先定義,再給每個陣列元素賦值
3. 當物件陣列所屬的類中包含單個引數的建構函式,可簡寫
類部分的學習總結
學習完類的章節後,有些許筆記與心得予以分享與記錄 本學期我們正式由面向過程轉向物件導向程式設計。在物件導向學習中,我們首先學習了類 是對具有相同屬性和行為的一組物件的抽象與統一描述,是使用者自定義的資料型別。然而類的定義包括兩個部分 1.行為 通過函式實現 2.屬性 以資料表示。同時,我們學到了一種...
關於「類」的學習總結
首先,在關於類的學習中,我們首先要明白 什麼是 類 怎麼去定義,如何去使用。類的定義格式一般地分為說明部分和實現部分。說明部分是用來說明該類中的成員,包含資料成員的說明和成員函式的說明。成員函式是用來對資料成員進行操作的,又稱為 方法 實現部分是用來對成員函式的定義。概括說來,說明部分將告訴使用者 ...
c 學習 類的設計總結
1 編譯器生成的成員函式 1 預設建構函式 這個不做詳細的介紹,相信的大家已經很了解了。2 複製建構函式 classname const classname 在下述情況下將使用複製建構函式 a 將新的物件初始化為乙個同類的物件 b 按值就物件傳遞給引數 c 函式按值返回物件 d 編譯器生成臨時物件 ...