找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2126|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[C++]筆記四: C++類通俗點(diǎn)說—— C結(jié)構(gòu)體復(fù)習(xí)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
C++類通俗點(diǎn)說—— C結(jié)構(gòu)體復(fù)習(xí)
核心:
C++的類就是對(duì)C語言的結(jié)構(gòu)體進(jìn)行了擴(kuò)展,C++的結(jié)構(gòu)體可以包含函數(shù)!
------------------------------------------------------
前言
該資料為C++初學(xué)者整理,知識(shí)層次較低,大神可以路過,當(dāng)然也可以留下來給我們指點(diǎn)迷津!萬分感激!
該資料需要讀者具備一定的C語言編程基礎(chǔ)!
從今天開始我們就起步做有關(guān)C++編程資料的整理,我們也正在學(xué)習(xí)C++,所以從一個(gè)初學(xué)者的角度去把握用怎樣的切入點(diǎn)能讓初學(xué)者看得過癮,學(xué)的通透!我們自己呢也從這個(gè)過程中去找漏洞,提升編程能力,這將不是一個(gè)知識(shí)的遷移過程,而是一個(gè)初學(xué)者與初學(xué)者的交流過程,所以我們的資料中有表述不準(zhǔn)確的地方,還請(qǐng)讀者能夠指正!我們?nèi)f分感激!
---------------------------------------------------------------------------
我們學(xué)習(xí)C++為什么要復(fù)習(xí)C語言結(jié)構(gòu)體呢?
在我看過的對(duì)C++進(jìn)行講述的教材中,開篇往往是兩個(gè)字“對(duì)象”!因?yàn)镃語言是面向過程的,而C++特色是面向?qū)ο螅∷源蠖鄶?shù)書籍最開始就在說面向?qū)ο蟮氖虑椤?/div>
但我在最初學(xué)習(xí)的過程中發(fā)現(xiàn)自己對(duì)“對(duì)象”這個(gè)詞匯....總是想偏,對(duì)這個(gè)詞匯云里霧里的,什么叫面向?qū)ο蟀,看了一通沒看懂。所以我們先不深究什么叫面向?qū)ο蟆?/div>
我們先來略看一下C語言中的結(jié)構(gòu)體。對(duì)于這個(gè)大家應(yīng)該是很熟悉的,如果對(duì)C語言結(jié)構(gòu)體的概念有模糊,請(qǐng)自行查閱資料。
-----------------------------------------------------
C語言結(jié)構(gòu)體
在C語言編程中,我們定義自己的身高,可以用整型int變量,定義一家人(比如三口人)的身高,可以用int型數(shù)組。
如果我們要表示王者榮耀游戲中各個(gè)英雄的姓名、身高(單位cm)、體重(單位kg),這三種并不是同一類型的數(shù)據(jù),那我們就用到結(jié)構(gòu)體了。
struct hero
{
   unsigned char name[10];
    int height;
    float weight;
};
struct hero LuBan; //定義“LuBan”變量
結(jié)構(gòu)體或稱結(jié)構(gòu),就像int、float等基本類型一樣,也是一種數(shù)據(jù)類型,使用戶自己定義的,它允許存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng),就像上面的hero結(jié)構(gòu)體。就像打包封裝,把一些有共同特征(上面的身高體重等都屬于同一個(gè)英雄)的變量封裝到內(nèi)部,通過一定的方法訪問和修改這些內(nèi)部變量。
關(guān)于更多的結(jié)構(gòu)體的知識(shí)我們這里不多說。
我們?cè)诮Y(jié)構(gòu)體內(nèi)部定義了一些變量,看到“LuBan”這個(gè)結(jié)構(gòu),我們就能查找到他的身高、體重等數(shù)據(jù)。
----------------------------------------------------
函數(shù)
魯班英雄具有“河豚手雷”這個(gè)技能,就像炒菜一樣,油、鹽、菜、蛋...出鍋!這樣一個(gè)順序就完成了一道美食,魯班也是用一個(gè)順序完成了這個(gè)技能。左閃、右躲...殺!
這就是一個(gè)函數(shù)。
一個(gè)變量定義了一個(gè)英雄的角色性質(zhì),一個(gè)函數(shù)定義了一個(gè)英雄的大招使用過程!所以C語言的面向過程很好理解。
這個(gè)魯班我們就可以叫做一個(gè)對(duì)象!他的身高、體重等這些變量我們稱之為“屬性”或者“狀態(tài)”,他具有的大招(能干什么)我們稱之為“行為”。
就像魯班七號(hào),這個(gè)英雄有姓名、性別、身高、體重等這些“數(shù)量”,也就是變量=屬性=狀態(tài);他可以吃飯、睡覺、打怪,這些行為=函數(shù)。所以,我們就叫C語言中的變量為“屬性”或“狀態(tài)”,C語言中的函數(shù)稱為“行為”。
------------------------------------------------------
從結(jié)構(gòu)到類
在C語言的結(jié)構(gòu)體定義中,我們只是把變量放到了結(jié)構(gòu)體中,而C++的類就是對(duì)C語言的結(jié)構(gòu)體進(jìn)行了擴(kuò)展,C++的結(jié)構(gòu)體可以包含函數(shù)!
舉個(gè)栗子:
struct hero
{
//屬性
   unsigned char name[10];
    int height;
    float weight;

//行為
    void eat()
{吃肉!}       //僅做說明
void sleep()
{站著睡!}
void KillMonsters()
{使用河豚手雷打怪!}
}; //分號(hào)
struct hero LuBan; //定義“LuBan”變量

調(diào)用:
void main()
{
LuBan.height=150;
LuBan.weight=50;
LuBan.KillMonsters();
}
“英雄”這個(gè)結(jié)構(gòu)體的成員,與C語言不同,我們既有變量也有函數(shù),變量和函數(shù)都屬于該結(jié)構(gòu)體,變量叫成員變量,函數(shù)叫成員函數(shù)。C語言的結(jié)構(gòu)智能描述一個(gè)對(duì)象的屬性,不能描述一個(gè)對(duì)象的行為。
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象具有屬性(狀態(tài))和行為,屬性保存在成員變量中,行為通過成員方法(函數(shù))來實(shí)現(xiàn)。成員方法又是什么?
其實(shí)方法和函數(shù)可以理解為一回事。只是在C++中“函數(shù)”被稱之為“方法”。
-----------------------------------------------------
C++類的定義
前面看明白了,這個(gè)地方就不多說話!
將結(jié)構(gòu)體定義中的關(guān)鍵字struct換成class,就得到了C++中類的定義。
class Hero    //類名習(xí)慣首字母大寫
{
//屬性
   unsigned char name[10];
    int height;
    float weight;

//行為
    void eat()
{吃肉!}       //僅做說明
void sleep()
{站著睡!}
void KillMonsters()
{使用河豚手雷打怪!}
}; //分號(hào)
用類定義的就叫對(duì)象。
Hero LuBan; //定義了一個(gè)Hero類的對(duì)象LuBan

2017年12月29日13:07:24


【C++】筆記系列均為原創(chuàng),轉(zhuǎn)載請(qǐng)注明轉(zhuǎn)自微號(hào):Lightspeed-Tech  或  AutoCode
  更多精彩資料,請(qǐng)關(guān)注!



評(píng)分

參與人數(shù) 2黑幣 +15 收起 理由
白鶴859 + 10 贊一個(gè)!
tyyhm + 5 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表