認(rèn)識一下C++ 《類和對象》

因為要自學(xué)cocos2d-x, 自己選的方向就是采用C++, 所以記錄一下:

C++ 讀作”C加加“,是”C Plus Plus“的簡稱解阅。顧名思義钉寝,C++是在C語言的基礎(chǔ)上增加新特性.
C++ 主要在C語言的基礎(chǔ)上增加了面向?qū)ο蟮臋C(jī)制蔬芥,以適用于大中型軟件的編寫。

在C語言中冒签,我們會把重復(fù)使用或具有某項功能的代碼封裝成一個函數(shù)躲株,將具有相似功能的函數(shù)放在一個源文件;調(diào)用函數(shù)時镣衡,引入對應(yīng)的頭文件就可以霜定。

而在C++中档悠,多了一層封裝,就是類(Class)望浩。類由一組相關(guān)聯(lián)的函數(shù)辖所、變量組成。你可以將一個類或多個類放在一個源文件磨德,使用時引入對應(yīng)的類就可以缘回。

面向?qū)ο缶幊?(OOP , Object Oriented Programming)

C語言源文件后綴為.c
C++源文件后綴為.cpp
C/C++ 使用相同的編譯器,Windows 下一般是微軟的 cl.exe典挑,
Linux 下一般是 GCC酥宴。

C++幾乎完全兼容C語言,它們類似子集(C語言)和超集(C++)的概念您觉。不過C語言和C++的編譯方式不同拙寡,.c 源文件會按照C語言的方式編譯,.cpp 源文件會按照C++的方式編譯琳水。

                                       《類和對象》

1肆糕、C++是一門面向?qū)ο蟮木幊陶Z言,理解C++在孝,首先要理解類與對象這兩個概念诚啃。

2、C++中的類可以看做C語言中結(jié)構(gòu)體(Struct)的升級版私沮。結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型始赎,可以包含若干成員(變量),每個成員的數(shù)據(jù)類型可以不一樣仔燕;可以通過結(jié)構(gòu)體來定義結(jié)構(gòu)體變量极阅,每個變量擁有相同的性質(zhì)。例如:
下面的是C 語言的寫法:

#include <stdio.h>

int main(){
// 定義結(jié)構(gòu)體 Student
struct Student{
    // 結(jié)構(gòu)體包含的變量
    char *name;
    int age;
    float score;
};

// 通過結(jié)構(gòu)體來定義變量
struct Student stu1;
// 操作結(jié)構(gòu)體的成員
stu1.name = "小小";
stu1.age = 6;
stu1.score = 98.5;

printf("%s的年齡是 %d涨享,成績是 %f\n", stu1.name, stu1.age, stu1.score);

return 0;
}

3筋搏、C++中的類也是一種構(gòu)造數(shù)據(jù)類型,但是進(jìn)行了一些擴(kuò)展厕隧,類的成員不但可以是變量奔脐,還可以是函數(shù);通過類定義出來的變量也有特定的稱呼吁讨,叫做“對象”髓迎。例如:
#include <stdio.h>

int main(){
//通過class關(guān)鍵字類定義類
class Student{
public:  //類包含的變量
    char *name;
    int age;
    float score;

public:  //類包含的函數(shù)
    void Study(){
        printf("%s的年齡是 %d,成績是 %f\n", name, age, score);
    }
};

//通過類來定義變量建丧,即創(chuàng)建對象
class Student stu1;  //也可以省略關(guān)鍵字class
//操作類的成員
stu1.name = "小小";
stu1.age = 6;
stu1.score = 98.5;
stu1.Study();

return 0;
}

總結(jié):

1排龄、 上面的C 和 C++的運(yùn)行結(jié)果是一致的。

2翎朱、class 是C++中的關(guān)鍵字橄维,用來聲明一個類尺铣。

3、public 也是一個關(guān)鍵字争舞,表示后面的成員都是公有的凛忿;

4、所謂公有竞川,就是通過當(dāng)前類創(chuàng)建的對象都可以訪問這些成員店溢。除了 public 還有 private,它表示私有的委乌,也就是對象都不能訪問這些成員床牧。

5、在C語言中遭贸,通過"結(jié)構(gòu)體名"完成結(jié)構(gòu)體變量的定義戈咳;

在C++中,通過"類名"完成對象的定義革砸。結(jié)構(gòu)體變量和對象被定義后會立即分配內(nèi)存空間除秀。(要注意內(nèi)存管理)

.

擴(kuò)展:

類是創(chuàng)建對象的模板糯累,一個類可以創(chuàng)建多個對象算利,每個對象都是類類型的一個變量;創(chuàng)建對象的過程也叫類的實例化泳姐。每個對象都是類的一個具體實例(Instance)效拭,擁有類的成員變量和成員函數(shù)。

與結(jié)構(gòu)體一樣胖秒,類只是一種復(fù)雜數(shù)據(jù)類型的聲明缎患,不占用內(nèi)存空間。而對象是類這種數(shù)據(jù)類型的一個變量阎肝,占用內(nèi)存空間挤渔。

在定義類的對象時,class 關(guān)鍵字可要可不要风题。但出于習(xí)慣我們通常都會省略掉class關(guān)鍵字判导,例如:

class Student LiLei; //正確
Student LiLei; //同樣正確

創(chuàng)建類的對象時,除了能定義單個變量以外沛硅,還可以定義一個數(shù)組或者指針眼刃。例如:

Student all_student[100];
Student *pointer;

下面是解惑:先看看代碼

#include <stdio.h>

//類可以在所有函數(shù)之外定義
class Student{
public:  //類包含的變量
char *name;
int age;
float score;

public:  //類包含的函數(shù)
void say(){
    printf("%s的年齡是 %d,成績是 %f\n", name, age, score);
  }
};

int main(){
//創(chuàng)建對象
Student stu;
stu.name = "小明";
stu.age = 15;
stu.score = 98.5;
stu.say();

//定義指針
Student *pt_stu = &stu;
pt_stu->name = "李四";
pt_stu->age = 16;
pt_stu->score = 80;
pt_stu->say();

return 0;
}

1摇肌、疑惑:為啥有些是使用 “ . ”, 例如 stu.name = "小明";有些使用 stu->name = "李四"; 為啥使用“ -> ” ?

答:上面和結(jié)構(gòu)體(struct)類似擂红,一個對象通過成員選擇符” . “來訪問成員變量和成員函數(shù),而指針變量通過指針操作符”->“來訪問成員

注意:對象指針指向的是一個具體的對象围小,而不是類昵骤。下面的寫法是錯誤的:

Student *pt;
pt = &Student;  //類

類成員的訪問權(quán)限

C++通過 public树碱、protected、private 三個關(guān)鍵字來控制成員變量和成員函數(shù)的訪問權(quán)限涉茧,它們分別表示公有的赴恨、受保護(hù)的、私有的伴栓,被稱為成員訪問限定符伦连。所謂訪問權(quán)限,就是你能不能使用該類中的成員钳垮。

注意:

Java惑淳、C# 程序員注意,C++ 中的 public饺窿、private歧焦、protected 只能修飾類的成員,不能修飾類肚医,C++中的類沒有共有私有之分绢馍。

訪問權(quán)限需要分兩部分說明:類內(nèi)和類外。

.
a.在類內(nèi)部肠套,無論成員變量或成員函數(shù)被聲明為 public舰涌、protected 還是 private,都是可以互相訪問的你稚,無訪問權(quán)限限制瓷耙。

b.在類外部,通過對象無法訪問 private刁赖、protected 屬性的成員變量和成員函數(shù)搁痛,而僅可以訪問 public 屬性的成員變量和成員函數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宇弛,一起剝皮案震驚了整個濱河市鸡典,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枪芒,老刑警劉巖彻况,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異病苗,居然都是意外死亡疗垛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門硫朦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贷腕,“玉大人,你說我怎么就攤上這事≡笊眩” “怎么了瞒斩?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涮总。 經(jīng)常有香客問我胸囱,道長,這世上最難降的妖魔是什么瀑梗? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任烹笔,我火速辦了婚禮,結(jié)果婚禮上抛丽,老公的妹妹穿的比我還像新娘谤职。我一直安慰自己,他們只是感情好亿鲜,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布允蜈。 她就那樣靜靜地躺著,像睡著了一般蒿柳。 火紅的嫁衣襯著肌膚如雪饶套。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天垒探,我揣著相機(jī)與錄音妓蛮,去河邊找鬼。 笑死叛复,一個胖子當(dāng)著我的面吹牛仔引,可吹牛的內(nèi)容都是我干的扔仓。 我是一名探鬼主播褐奥,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翘簇!你這毒婦竟也來了撬码?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤版保,失蹤者是張志新(化名)和其女友劉穎呜笑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彻犁,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡叫胁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了汞幢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驼鹅。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出输钩,到底是詐尸還是另有隱情豺型,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布买乃,位于F島的核電站姻氨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剪验。R本人自食惡果不足惜肴焊,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望功戚。 院中可真熱鬧抖韩,春花似錦、人聲如沸疫铜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壳咕。三九已至席揽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谓厘,已是汗流浹背幌羞。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留竟稳,地道東北人属桦。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像他爸,于是被迫代替她去往敵國和親聂宾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法诊笤,類相關(guān)的語法系谐,內(nèi)部類的語法,繼承相關(guān)的語法讨跟,異常的語法纪他,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束,并將收入和稅金輸出到文件tax. out晾匠。 檢查...
    SeanC52111閱讀 2,754評論 0 3
  • 原文地址: http://martinfowler.com/articles/richardsonMaturity...
    達(dá)貢之邪力閱讀 2,616評論 0 1
  • 高銘玉閱讀 202評論 0 0
  • 媽媽去世了茶袒,靈堂前六歲的小侄子大浩問:“奶奶是死了嗎?”我說:“奶奶去了另一個世界凉馆⌒皆ⅲ”四歲的小侄女珞珞問:“我們?yōu)?..
    小九的蝸牛閱讀 558評論 0 3