一、綜述 類是我們自己定義的數據類型(新類型) 設計類時要考慮的角度: (1)站在設計和實現者的角度來考慮 (2)站在使用者的角度來考慮 (3)父類,子類 二、類基礎 (1)一個類就是一個用戶自己定義的數據類型,把類可以想象為一個命名空間,包著一堆東西(成員函數,成員變數)。 (2)一個類的構成:成 ...
一、綜述
類是我們自己定義的數據類型(新類型)
設計類時要考慮的角度:
(1)站在設計和實現者的角度來考慮
(2)站在使用者的角度來考慮
(3)父類,子類
二、類基礎
(1)一個類就是一個用戶自己定義的數據類型,把類可以想象為一個命名空間,包著一堆東西(成員函數,成員變數)。
(2)一個類的構成:成員變數,成員函數(有許多特殊的成員函數)。
(3)我們訪問類成員時,我們就用對象名.成員名來訪問成員
如果是指向對象的指針,我們就用指針名->成員名來訪問成員。
class student { int number; char name[100]; } student someone; // 定義類的對象 someone.number = 1000; student *someone1 = &someone; someone->number = 1005; cout << someone1->number << endl;
(4)public成員提供類的介面,暴露給外接,供外界調用;private成員提供各種實現類的細節方法,但不暴露給使用者,外界無法訪問這些成員。
(5)struct是成員預設為public的class; struct A{….}
(5)class是成員預設為private(私有)class A{….}
三、成員函數
class Time { public: int Hour; // 小時 int Minute; // 分鐘 int Second; // 秒鐘 void initTime(int tmpHour, int tmpMinute ,int tmpSecond) { Hour = tmpHour; Minute = tmpMinute; Second = tmpSecond; } } int main() { Time MyTime; // 類對象 MyTime .initTime(MyTime,11,14,5); cout << MyTime.Hour << endl; cout << MyTime.Minute << endl; cout << MyTime.Second << endl; return 0; }
當做工程來寫
//time.h #ifndef __MYTIME__ #define __MYTINE__ class Time { public: int Hour; // 小時 int Minute; // 分鐘 int Second; // 秒鐘 void initTime(int tmpHour, int tmpMinute ,int tmpSecond); }
#endif
//time.cpp #include “Tiem.h” // 成員函數的實現 // 其中::稱為作用於運算符,表示initTime這個函數屬於Time類 void Time::initTime(int tmpHour, int tmpMinute ,int tmpSecond) { Hour = tmpHour; // 成員函數中可以直接使用成員變數名 Minute = tmpMinute; Second = tmpSecond; }
入口函數文件
#include “Time.h” int main() { Time MyTime; // 類對象 MyTime .initTime(MyTime,11,14,5); cout << MyTime.Hour << endl; cout << MyTime.Minute << endl; cout << MyTime.Second << endl; return 0; }
四、對象的拷貝
對象本身是可以拷貝的
預設情況下,類對象的拷貝,是每個成員變數的逐個拷貝。
如果在類中定義適當的賦值運算符就能夠控制對象的拷貝行為。
Time myTime; myTime.Hour = 12; myTime.Minute = 15; myTime.Second = 5; Time myTime2 = myTime; // 定義新對象並初始化 Time myTime3(myTime); Time myTime4 {myTime}; Time myTime5 = {myTime}; myTime5.Hour = 8;
五、私有成員
class Time { private: int Millsecond; // 毫秒 public: int Hour; // 小時 int Minute; // 分鐘 int Second; // 秒鐘 void initTime(int tmpHour, int tmpMinute ,int tmpSecond) { Hour = tmpHour; Minute = tmpMinute; Second = tmpSecond; } void initMillTime(int mls) { Millsecond = mls; // 成員函數可以訪問成員變數,不管成員是否私有 } } Time myTime; //myTime. Millsecond = 1000; // 出錯,無法訪問 myTime.initMillTime(1000); // 私有成員變數的值可以通過公有的成員變數來獲取與設置