1、現實世界的事物所具有的共性就是每個事物都具有自身的屬性, - -些自身具有的行為,例如一個學生有姓名、性別、年齡等屬性,吃飯睡覺玩游戲等行為。C+ +提供了類的概念,可以將某一類事物的所有屬性和行為封裝在一個class中。
創(chuàng)新互聯公司于2013年開始,是專業(yè)互聯網技術服務公司,擁有項目網站制作、成都網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元梓潼做網站,已為上家服務,為梓潼各地企業(yè)和個人服務,聯系電話:189808205752、類對于某個事物的描述其實還是抽象的,例如有一-類事物有姓名、性別、年齡等屬性,可以吃飯睡覺玩游戲等行為,如果只是這么描述的話其實我們是不知道這個事物具體是什么樣的,因為這個類沒有告訴我們每個屬性具體的值是多少(這個事物的姓名是什么,年齡是多少),所以類只是對某一類事物的一個描述而已。實際應用中我們需要操作某類事物中一個或者多個具體的事物。那么這個具體的事物我們就稱之為對象。
3、類是抽象的,對象是具象的。
4、對象是怎么來的呢?由類實例化而來。因此我們也說通過一個類實例化-個對象。
一、類的基本使用 1.類的定義和實例化1)類的定義
屬性:變量
行為:函數/方法
類的定義:class+類名{
訪問控制符:
成員變量//屬性
成員函數//行為
};
訪問控制符有三種:public,private,protected.
實列:創(chuàng)建一個動物類
class CAnimal{//,在工程中我們習慣將類名首字母大寫
public://訪問控制符
char name[32];//定義一個名字屬性
int age;//定義一個年齡屬性
public:
void func(char *voice){//成員函數,也稱方法
cout<
這里先使用訪問控制符public,后面再詳細介紹訪問控制符。
2)類的實列化
實列化一個普通對象
類名 +對象名
CAnimal a;//就簡單實列化一個對象了
當進行實列化了后,a就擁有CAnimal的公有屬性了。
那么接下來我們就對這個對象的屬性進行賦值。
CAnimal a;//實列化一個對象
a.age=10;//對年齡進行賦值
cout<
10
xiaohua:gu lu gu lu
xiaohua
這樣我們就給a這個對象的屬性賦值,查看屬性和調用方法。
那么我們下面來學習定義一個指針變量
類名 *對象名
CAnimal *p;//定義一個指針
注意:定義一個指針變量,但是本質還是指針,不是實列化的對象。
那么接下來就讓我們來看看指針變量的用法吧
CAnimal a;
a.age=10;
coutage<func("hulalala");//通過指針來調用方法
10
xiaohua:gu lu gu lu
xiaohua
100
xiaohua:hulalala
2.訪問控制符C++中給予成員函數和成員變量訪問權限。
public:公有的,修飾成員函數和成員變量只能在類里類外均可以訪問。
protected:保護的,修飾成員函數和成員變量只能在類里可以訪問。
private: 私有的,修飾成員函數和成員變量只能在類里可以訪問。
就這么說著大家都應該不是很明白吧。什么叫類內,什么叫類外?
class Teacher{
public://
char name[32];
private://在私有屬性下定義的
int _age;//[Error] 'int Teacher::_age' is private
char _sex;
};
int main()
{
Teacher t;
int age;
char m;
memset(t.name,0,sizeof(t.name));
strcpy(t.name,"wanglaoshi");
t._age=34;
t._sex='m';
return 0;
}
大家看報錯原因,_age在private中,在Teacher這個類外是不能進行訪問的。
[Error] 'int Teacher::_age' is private
雖然是private,但是如果我們要對其進行訪問又該怎么進行操作的呢?這個時候我們就在類內進行修改,private允許在類內進行訪問,那么在類內又該怎么進行賦值呢?下面進行代碼展示:
class Teacher{
public://
char name[32];
void set_age(int age) {_age=age;}
int get_age() {return _age;}
void set_sex(char sex) {_sex=sex;}
char get_sex() {return _sex;}
private:
int _age;//[Error] 'int Teacher::_age' is private
char _sex;//一般在private中的屬性前加_
};
如上面代碼顯示,在類的public中創(chuàng)建兩個函數為在其他函數的訪問提供接口,一個set函數給私有屬性賦值,一個get函數將私有屬性的值拿出來。
那么有沒有小伙伴會這么想,反正都能訪問private里面的值,那么這個private有什么用呢?乍一看好像沒啥用,但是小伙伴們想想啊,萬一我們在給private里的屬性賦值的時候會不會賦錯,或者賦一些奇葩的數字上去
t._age=10000;
t>_sex='p';
如上代碼,但是在我們的現實生活中沒有這樣的人存在,明顯不滿足客觀規(guī)律。這時候private配合著set函數就可以輕松的解決了,上面那個代碼大家看看該怎么改才能達到目的
void set_age(int age){
if(age<0||age>200){
cout<<"error age"<
我們在set函數里面加給條件判斷,這樣我們就可以對數據進行合理性檢驗,保證代碼的健壯性。
雖然我們進行了賦值,但是為了代碼的健壯性我們可以對代碼進行優(yōu)化改進
bool set_age(int age){
if(age<0||age>200){
cout<<"error age"<
利用bool類型這樣我們就可以在調用函數時發(fā)現問題了。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧