近來學習了c++最有特點的部分——類。
類相比於c語言的結構體來說,優點就是類具有許可權的分別,公有,私有,保護
。公有:一般行為函式許可權為公有,可在類外被呼叫。
私有:無法在類外訪問,一般存放資料成員。
保護:繼承中有應用。
類的特點:封裝性、繼承性、多型性。
類的優點:更好更
高效的組織資料。
我們定義類一般分為兩種:
資料類、
操作類。
資料類:描述
資訊的類(資料),一般包含
get函式
、set函式
、建構函式
、display函式
。操作類:描述
操作的類(操作),一般在管理系統中實現
增、刪、查、改
的功能。
一般定義格式
class a
public:
protected:
private: //預設類成員訪問許可權私有
//資料成員在定義中不初始化
}; //一定要加分號,我也是經常忘....
返回值 類名::成員函式(參數列){}; //成員函式定義,類名限定,成員不能是自身(不能遞迴呼叫)
int main()
類名 物件名;
物件名.公有成員; //圓點呼叫
物件指標->公有成員; //指標呼叫
內聯函式
inline 函式名(); //這樣的函式呼叫快,適用於小函式常用的,實際上這樣函式常駐記憶體,已經用的比較少了
建構函式
建立物件時,系統自動呼叫的函式。
特點:無返回值型別,與類名相同,可過載。
class date //一般規則,類名大寫
public:
date();
建構函式初始化列表
date(int dd,int mm,int yy):d(dd),m(mm),y(yy){}; //順序與私有成員的定義順序一致
一般必須使用的情況:
1.資料成員為常量 const
2.資料成員為引用型別 &
3.資料成員是沒有無參建構函式的類的物件
建構函式的過載
class box;
;box::box()
box::box(int h,int w,int l):height(h),width(w),length(l){}; //注意過載的時候可能會出現二義性
複製建構函式
用已有物件建立新物件。
類名::類名(const 類名& 引用名);
一般呼叫
class box
{};int main()
說到複製建構函式,就有深複製和淺複製的問題了
淺複製:對於簡單型別比較好用,當p2物件複製p1物件的時候,p1刪除,p1中的指標指向的位址內容刪除,p2中的指標複製的
位址與p1相同,所以p2指向的位址變為空。(其實就是p1、p2中的指標指向了同乙個空間)
深複製:對於複雜變數比較好用,一般用new申請空間,複製時將資源一併複製 。
this指標
為自動分配的指標,指向物件。
使用情況:
1.變數與引數同名(起不出名了.....)
2.返回物件本身
3.避免對同一物件操作
比如說學生資訊管理系統
setname(string name)
同名變數,生存空間小的變數,優先
析構函式
物件生存結束時,釋放成員所佔空間,自動呼叫。
特點:無返回值,無引數,不能過載,自動呼叫。
~類名()
//一般析構函式中delet釋放動態申請的空間,清理記憶體空間。
其他型別成員
常成員
唯讀不寫
const 關鍵字
const int a; //常資料成員只能用初始化列表初始化
void print() const; //常成員函式只能讀,不能寫。
靜態成員
分配空間後始終存在
好處:省空間,操作統一
static 關鍵字
class counter
void shonnum();int counter::num=0; //靜態成員初始化辦法.
友元函式
一般用於運算子過載,破壞了類的封裝性,不建議使用。
程式開發步驟(括號內為個人解讀)
1.功能(程式要幹嘛)
2.分類彙總(增刪查改)
3.設計類(想想操作類有啥功能)
4.設計資料類(根據功能想想要有啥資料)
5.整合
6.除錯(非常重要)
一般來說除錯先除錯資料類,資料類為基礎
資料類調好後 ,再除錯操作類,操作類中先除錯最需要的功能,然後再陸續增加功能,測試的時候多用幾組樣例,一定要每個函式都調。
一般採取滾雪球式調法,寫乙個,調乙個,從基礎調起,雪球越滾越大。
總結
類是c++程式最具特色的部分,也是c++程式與c的重要區別,還是c++的基礎,特點也是非常明顯的,封裝性。類也是程式後期開發的基礎,簡單的說開發程式就像是搭積木,要一塊一塊的搭建,一部分一部分的增加,才能搭建出乙個良好的程式。好的程式也要可以隨時隨地增加功能,減少功能,這也就要求類的定義詳細,可讀性強,我們想要寫出好的程式,就要養成良好的習慣,從現在開始養成良好的程式設計習慣也是非常重要的。
C 學習心得
c 學習心得 c 是最難的語言 這個世界上最難的程式語言可能非 c 莫屬了。你千萬 不要以為 幾天就可以學好 c c 的學習曲線是相當 bt的,你可以看看 這篇文章 c 是一門很自由的語言,自由到了有點 bt和恐怖的地步 我甚至 認為c 並不是一門成熟的程式語言,因為太容易犯錯了。所以,你一定要在 ...
c 學習心得
1.typedef struct 結構體型別 c 提供了許多種基本的 資料型別 如int float double char等 供使用者使用。但是由於程式需要處理的問題往往比較複雜,而且呈多樣化,已有的 資料型別 顯得不能滿足使用要求。因此c 允許使用者根據需要自己宣告一些型別,使用者可以自己宣告的...
C 學習心得
我是乙個轉專業到計算機行業的,系統學習c 大概有兩年了,其中走了很多彎路,也陷入很多次迷茫,最近有一些新的感受,所以想總結下來,我所認為的學習一門語言所需要經歷的階段。當你覺得已經掌握大部分的語法知識後 60 以上 可以去看一些簡單專案的源 一方面學習別人解決問題的方式,另一方面是加深語法知識的印象...