終於接觸到正式的c++內容了——類與物件。
程式設計習慣:
1、函式單一原則即乙個函式實現乙個功能
2、建構函式必須至少是兩個乙個帶參乙個不帶參,get set函式必須寫,其次寫功能函式
3、定義類的物件名首字母大寫,變數小寫,常量全大寫。
除錯技巧:類每增加乙個成員函式都要在主函式中進行測試,每增加乙個功能所有功能都試執行。
注:類(結構體)定義都以「;」結束。
一、類的定義
物件如何定義:
類名 物件名
x obj1
類名 物件名(實參列表)
x obj2(5)
資料成員的類內初始化:c++11 允許為資料成員提供乙個類內初始值,建立物件時,類內初始值將用於初始化資料成員,沒有初始值的成員將被預設初始化,資料成員類內初始值只能放在等號「=」右邊,或者放在花括號「{}」裡,不能使用圓括號「()」 。
例如:
struct salesdata;
salesdata s; //productno 初始化為空串,price 和unitsold 都初始化為0
s .print(); //輸出「:0 0 0」
成員函式的類外定義:成員函式直接在類內定義,也可以在類外定義。
例如:
struct salesdata;
//成員函式的類外定義
double salesdata::totalrevenue()
void salesdata::read()
void salesdata::print()
;void a::func() //func是成員函式,可以訪問a 的任何成員
int main()
;
this指標:
每個成員函式都有乙個隱含的引數,指向接收訊息的物件,稱為this指標,x類的this指標型別是x*。
this指標是乙個常量,含有當前實施呼叫的物件的位址,不能改變this指標的值,也不能取this指標的位址(this是乙個位址)。
this指標在成員函式中的用途:
1、區分與資料成員同名的變數
2、返回當前物件
3、取得當前物件位址
訪問器和修改器:
將資料成員限定為private,並提供public成員函式來對其進行訪問,這種成員函式被稱為訪問器和修改器。
與直接訪問資料成員相比,訪問器和修改器更好地體現了封裝性,可以在修改器中進行資料有效性的驗證,從而確保物件不會因外部修改而處於無效的狀態
訪問器和修改器常以一對getx()和setx() 函式的形式出現
class rectangle
void setwidth(double newwid)
函式訪問類的私有資料會引起編譯錯誤,解決方法:1、公有化但破壞封裝性2、友元 friend也會破壞封裝性盡量避免使用(在宣告友元時要遵循一條規則:友元必須在被訪問的類中宣告)。
注:運算子過載時可以用友元,其餘情況不使用
三、建構函式和析構函式:
建構函式:
1、 建構函式的名字和類名字相同
2、 沒有返回型別(不是返回void 型別)
3、 在建立物件時被自動呼叫,負責初始化物件
引用成員,const 資料成員,類型別的資料成員不能使用賦值的方式提供初始值,對於這種可以用初始化列表:建構函式(參數列) : 初始化列表。成員初始化的順序與它們在類定義**現的順序一致,初始化列表中初值排列的順序不影響。
class x //先初始化a,再用a初始化b
};
析構函式:
1、 析構函式負責在物件生存期結束時返回相關資源和自動釋放資源(銷毀物件)
2、 析構函式的名字是類名字前加波浪線「~」
3、 析構函式沒有返回型別,也沒有任何引數
4、 析構函式不能過載,只能為乙個類定義唯一乙個析構函式
四、const成員:const 成員的值在物件的整個生存期中都不會改變,const物件不能修改。
定義:返回型別 成員函式名(參數列) const
1、只有const 的成員函式才可以被const 物件呼叫
2、const 物件不能呼叫非const 成員函式
3、非const 物件可以呼叫const 成員函式
4、const 成員函式中不能修改類的資料成員
5、const 成員函式中不能呼叫其他非const 成員函式
const的用法小結:1、定義常量2、限定指標和引用3、限定函式引數4、限定函式返回值5、限定物件6、限定資料成員7、限定成員函式
五、static 成員:類成員特點:屬於整個類,不專屬於某個物件
1、static成員用於某個類的所有物件都需要訪問乙個共享的資料
2、static資料成員在類外初始化,使用類名字限定int object::count = 0;定義類之後馬上初始化(不屬於任何物件,無法用物件初始化)
3、static成員只能定義一次
4、在類的成員函式中可以直接訪問static資料成員
5、在非成員函式中通過兩種方式訪問static資料成員,物件名.成員名或物件名->成員名
static用法小結:
1、 定義函式內部的靜態區域性物件,改變物件的儲存類別
2、 限制名字的可見性
3、 限定資料成員
4、 限定成員函式
總結了這些近期所學的內容,沒有像上學期一樣做題,有的概念還是不了解,只能找一些例子來幫助理解,多看關於類的程式,把老師的demo好好研讀,在csnd上多搜尋一些程式,努力認真學吧。
類與物件學習總結
一 1.類的定義 1 類是對具有相同屬性和行為的一組物件的抽象與統一描述。是使用者自定義的資料型別 2 類的定義包括行為和屬性兩個部分。3 屬性以資料表示,行為通過函式實現。2.c 類定義的格式 class 類名 各成員函式的實現 3.注意事項 1 類的成員可以是其他類的物件,但不能以類自身的物件作...
類與物件學習總結
在大一上學期,我學習了些簡單的c語言程式,不過當時只是根據看到的題目寫出演算法來解決問題。新學期學習了類與物件之後,對程式有了新的體會。在學習類與物件時,了解了寫程式的兩種方法,一是面向過程。二是物件導向。其中面向過程我認為就是直接通過主函式或者借用其他函式,在主函式中直接寫演算法的程式。比如 he...
類與物件學習總結
類與物件 一 定義類和物件 1.一般形式 class 類名 定義類時首字母要大寫 public 公有段資料成員和成員函式 protected 保護段資料成員和成員函式 private 私有段資料成員和成員函式 此處分號不可省略!private 用於宣告私有成員。私有成員只能在類中可見,不能在類外或派...