C++第九篇:類和物件:類的定義和物件的建立
技術標籤:C/C++
類是物件的模板,一個類可以擁有多個多個物件
建立類的過程也叫類的例項化
每一個物件都是類的例項,擁有類的 成員變數 和 成員函式
類似於結構體,類只是一種複雜的資料型別的宣告,不佔用記憶體空間,類的物件就是這種型別的變數(例項)是個具體的資料,佔有記憶體地址和空間大小
類的定義:
class Mainkind
{
public :
char *name;
int age;
private :
int no;
public :
void sleep()
{
//睡覺
cout << "我要睡覺惹!" << endl;
}
};
注意:class mainkind { } ;
後面有分號 我都是經常性忘記 !!!
class 是C++中用來定義類的關鍵字
類的名稱首字母一般要大寫 !! 小可愛要注意哦
在{ }內部所包含的成員變數和成員函式,它們統稱類的成員 包含的部分也叫類體。
其中 public關鍵字 只能用在類的定義中 表示該成員 有公開的訪問許可權 我們一般習慣 public: 來表示 加一個冒號 來表示一塊區域的成員擁有公開的訪問許可權!
類只是一個模板,編譯後 不佔記憶體空間,所以類在定義的時候不要對類進行初始化,因為沒有空間儲存資料,只有在建立該類的物件的時候才會給成員分配記憶體,這個時候就可以賦值了。
在有該類的前提下,建立類的物件
//物件的建立
Mainkind man;
從這裡我們可以看出,類其實也是一種的資料型別,複雜的資料型別,自定義的資料型別,再來個例子佐證一下:
//物件的建立
Mainkind man[10];
一個man裡面包含了10個Mainkind的物件,,是不是熟悉來著。嗯哼?
訪問類的成員
類的物件建立以後,我們可以通過 . 來訪問該類的公開的成員變數。。例子就不舉了 因為類(累)。
指向類的指標
C中的指標在C++的類中也有一些妙用。。
//類的指標
Mainkind man;
Mainkind *Pman = &man;
我們建立了一個指向Mainkind型別資料的指標,通過取址運算子 & 取得地址
在堆上建立物件 用 new 關鍵字
在棧上建立的物件都有一個名字 就好像 man ,使用指標指向它 不是必須的,但是通過new 出來的物件的關鍵字就不一樣了啦 / /
它只是在棧上分配記憶體,並沒有名字,所以我們得到它的就只是一個指向它的指標,否則我們是找不到它的。。(俏皮)
所以呢,我們就需要用一個指標來接收它
>> 重點:使用 new 在堆上創建出來的物件是匿名的。沒法直接使用,必須要用一個指標來指向它,這樣我們才可以通過指標訪問它的成員了了餓了。
Mainkind *Pman = new Mainkind;
//指標呼叫 還記得嗎
Pman -> sleep();
最後最後:
棧記憶體是程式自動管理的,不能使用delete刪除;堆記憶體則是由軟體工程師管理的,物件使用完畢後,可以使用delete刪除掉;new和delete往往成對出現,以保證及時刪除不再使用的物件,防止無用記憶體堆積。
總結:
建立物件的兩種方式:
// 棧上建立 (Minkind man)
// 堆上建立 (Minkind *Pman = new Minkind)