您好,登錄后才能下訂單哦!
這篇文章主要介紹C++類和對(duì)象指的是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
C++ 中的類(Class)可以看做C語言中結(jié)構(gòu)體(Struct)的升級(jí)版。結(jié)構(gòu)體是一種構(gòu)造類型,可以包含若干成員變量,每個(gè)成員變量的類型可以不同;可以通過結(jié)構(gòu)體來定義結(jié)構(gòu)體變量,每個(gè)變量擁有相同的性質(zhì)。
例如:
#include <stdio.h> //定義結(jié)構(gòu)體 Student struct Student{ //結(jié)構(gòu)體包含的成員變量 char *name; int age; float score; }; //顯示結(jié)構(gòu)體的成員變量 void display(struct Student stu){ printf("%s的年齡是 %d,成績是 %f\n", stu.name, stu.age, stu.score); } int main(){ struct Student stu1; //為結(jié)構(gòu)體的成員變量賦值 stu1.name = "小明"; stu1.age = 15; stu1.score = 92.5; //調(diào)用函數(shù) display(stu1); return 0; }
運(yùn)行結(jié)果:
小明的年齡是 15,成績是 92.500000
C++ 中的類也是一種構(gòu)造類型,但是進(jìn)行了一些擴(kuò)展,類的成員不但可以是變量,還可以是函數(shù);通過類定義出來的變量也有特定的稱呼,叫做“對(duì)象”。
例如:
#include <stdio.h> //通過class關(guān)鍵字類定義類 class Student{ public: //類包含的變量 char *name; int age; float score; //類包含的函數(shù) void say(){ printf("%s的年齡是 %d,成績是 %f\n", name, age, score); } }; int main(){ //通過類來定義變量,即創(chuàng)建對(duì)象 class Student stu1; //也可以省略關(guān)鍵字class //為類的成員變量賦值 stu1.name = "小明"; stu1.age = 15; stu1.score = 92.5f; //調(diào)用類的成員函數(shù) stu1.say(); return 0; }
運(yùn)行結(jié)果與上例相同。
對(duì)于熟悉 C++ 的讀者,這段代碼并不規(guī)范,請(qǐng)忽略這一細(xì)節(jié),本節(jié)的重點(diǎn)是引入類和對(duì)象的概念。這套 C++ 教程是在C的基礎(chǔ)上編寫的,我并不希望一開始就提出過多的 C++ 概念,讓讀者吃不消,我希望讀者從C逐漸過渡到 C++,從第二章開始編寫規(guī)范的 C++ 代碼。也就是說,包括本節(jié)在內(nèi),第一章有很多不規(guī)范的 C++ 代碼,再次請(qǐng)熟悉 C++ 的讀者忽略。
class
和 public
都是 C++ 中的關(guān)鍵字,初學(xué)者請(qǐng)先忽略 public
(后續(xù)會(huì)深入講解),把注意力集中在 class 上。
C語言中的 struct 只能包含變量,而 C++ 中的 class 除了可以包含變量,還可以包含函數(shù)。display()
是用來處理成員變量的函數(shù),在C語言中,我們將它放在了 struct Student
外面,它和成員變量是分離的;而在 C++ 中,我們將它放在了 class Student
內(nèi)部,使它和成員變量聚集在一起,看起來更像一個(gè)整體。
結(jié)構(gòu)體和類都可以看做一種由用戶自己定義的復(fù)雜數(shù)據(jù)類型,在C語言中可以通過結(jié)構(gòu)體名來定義變量,在 C++ 中可以通過類名來定義變量。不同的是,通過結(jié)構(gòu)體定義出來的變量還是叫變量,而通過類定義出來的變量有了新的名稱,叫做對(duì)象(Object)。
在第二段代碼中,我們先通過 class
關(guān)鍵字定義了一個(gè)類 Student
,然后又通過 Student
類創(chuàng)建了一個(gè)對(duì)象 stu1。變量和函數(shù)都是類的成員,創(chuàng)建對(duì)象后就可以通過點(diǎn)號(hào).來使用它們。
可以將類比喻成圖紙,對(duì)象比喻成零件,圖紙說明了零件的參數(shù)(成員變量)及其承擔(dān)的任務(wù)(成員函數(shù));一張圖紙可以生產(chǎn)出多個(gè)具有相同性質(zhì)的零件,不同圖紙可以生產(chǎn)不同類型的零件。
類只是一張圖紙,起到說明的作用,不占用內(nèi)存空間;對(duì)象才是具體的零件,要有地方來存放,才會(huì)占用內(nèi)存空間。
在 C++ 中,通過類名就可以創(chuàng)建對(duì)象,即將圖紙生產(chǎn)成零件,這個(gè)過程叫做類的實(shí)例化,因此也稱對(duì)象是類的一個(gè)實(shí)例(Instance)。
有些資料也將類的成員變量稱為屬性(Property),將類的成員函數(shù)稱為方法(Method)。
類是一個(gè)通用的概念,C++、Java、C#、PHP 等很多編程語言中都支持類,都可以通過類創(chuàng)建對(duì)象。可以將類看做是結(jié)構(gòu)體的升級(jí)版,C語言的晚輩們看到了C語言的不足,嘗試加以改善,繼承了結(jié)構(gòu)體的思想,并進(jìn)行了升級(jí),讓程序員在開發(fā)或擴(kuò)展大中型項(xiàng)目時(shí)更加容易。
因?yàn)?C++
、Java
、C#
、PHP
等語言都支持類和對(duì)象,所以使用這些語言編寫程序也被稱為面向?qū)ο缶幊蹋@些語言也被稱為面向?qū)ο蟮木幊陶Z言。C語言因?yàn)椴恢С诸惡蛯?duì)象的概念,被稱為面向過程的編程語言。
在C語言中,我們會(huì)把重復(fù)使用或具有某項(xiàng)功能的代碼封裝成一個(gè)函數(shù),將擁有相關(guān)功能的多個(gè)函數(shù)放在一個(gè)源文件,再提供一個(gè)對(duì)應(yīng)的頭文件,這就是一個(gè)模塊。使用模塊時(shí),引入對(duì)應(yīng)的頭文件就可以。
而在 C++ 中,多了一層封裝,就是類(Class)。類由一組相關(guān)聯(lián)的函數(shù)、變量組成,你可以將一個(gè)類或多個(gè)類放在一個(gè)源文件,使用時(shí)引入對(duì)應(yīng)的類就可以。下面是C和C++項(xiàng)目組織方式的對(duì)比:
不要小看類(Class
)這一層封裝,它有很多特性,極大地方便了中大型程序的開發(fā),它讓 C++ 成為面向?qū)ο蟮恼Z言。
面向?qū)ο缶幊淘诖a執(zhí)行效率上絕對(duì)沒有任何優(yōu)勢(shì),它的主要目的是方便程序員組織和管理代碼,快速梳理編程思路,帶來編程思想上的革新。
面向?qū)ο缶幊淌轻槍?duì)開發(fā)中大規(guī)模的程序而提出來的,目的是提高軟件開發(fā)的效率。不要把面向?qū)ο蠛兔嫦蜻^程對(duì)立起來,面向?qū)ο蠛兔嫦蜻^程不是矛盾的,而是各有用途、互為補(bǔ)充的。如果你希望開發(fā)一個(gè)貪吃蛇游戲,類和對(duì)象或許是多余的,幾個(gè)函數(shù)就可以搞定;但如果開發(fā)一款大型游戲,那你絕對(duì)離不開面向?qū)ο蟆?/p>
以上是“C++類和對(duì)象指的是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。