話不多說,我們直接進入主題:
對象:客觀世界里的一切事物都可以看作是一個對象,每一個對象應當具有屬性(靜態特征,比如一個班級,一個專業,一個教室)和行為(動態特征,例如:學習,開會,體育比賽等)兩個要素。 對象是由一組屬性和一組行為構成的。
類(class):就是對象的類型,代表了某一批對象的共同特性和特征。類是對象的抽象,而對象是類的具體實例。
2.1 類的引入
在C語言中我們定義一個結構體是這樣定義的:
struct Student{ int _age; char* _Gender; char* _Name;};int main(){ struct S; return 0;}
我們都知道,在C中,“數據”和“處理數據的操作(函數)”是分開的,語言本身并沒有支持“數據和函數”之間的關聯性。那么,如果我們要在某種特定情況下讓數據和函數有一定的關聯,這個時候我們應該怎么處理呢?
先看一個例子:
很明顯,編譯器報錯了,還很多。也就是說在C語言當中是不允許在結構體中定義函數的,那么在C++中是不是也是這樣呢?
通過對比,我們明顯的發現C++是可以做到我們想要將數據和函數產生一定關系的操作的。
為了區別C語言中結構體的定義struct,在C++中我們常用class來代替struct。
2.2 類的定義
#include <iostream>using namespace std;class Student{public: char* _name;private: char* _Gender; int _age;};int main(){ class S; return 0;}
class是C++中定義類的關鍵字,Student為類的名字,{}中為類的主體,和結構體類似,在{}后面跟的是;。類中的元素稱為類的成員,類中的數據稱為類的屬性或者類的成員變量,類中的函數稱為類的成員函數。
類的定義通常有兩種方式:
1、將類的聲明和定義都放在類體中za
2、將類的聲明放在.h頭文件中,定義放在.cpp文件中
在代碼中我們看到了private 和 public兩個沒有見過的東西,接下來我們講一講C++的三大特性:繼承 封裝 多態
封裝:隱藏對象的屬性和現實細節,僅對外公開接口和對象進行交互,將數據和操作數據的方法有機結合。
這里的public 和 private是C++中的訪問限定符,訪問限定符有三個:public (公有) protected(保護) private(私有)。在下面的博文中我們會用到這些限定符,具體情況后續文章再作介紹,這里讀者只需了解就可。
這里做一些說明:
1、public成員在類外可以直接訪問
2、protected和private成員在類外不能夠直接訪問,在這里我們簡單的把他們看成一樣的。(二者區別就是基類private成員在派生類中是不能被訪問的,如果基類成員不想再類外被訪問,但需要在派生類中能訪問,就定義為protected,后面博文更到派生類時我們會再來把這兩個東西拿出來再講一講)
3、他們的作用域從該訪問限定符出現的位置開始直到下一個訪問限定符出現截止
4、class的默認訪問權限是private,而struct默認訪問權限是public(因為struct要兼容C的特點)
那么我們如何在類外訪問一個類中的私有成員變量呢?(面試題)
方法一:在類中添加一個共有的方法
我們可以看到在public中定義的公有函數可以在類外訪問私有成員變量,這是訪問的一種方法。
新聞熱點
疑難解答