C 類和物件到底是什麼

2022-09-24 12:48:11 字數 1783 閱讀 4043

目錄

c++ 中的類(class)可以看做c語言中結構體(struct)的公升級版。結構體是一種構造型別,可以包含若干成員變數,每個成員變數的型別可以不同;可以通過結構體來定義結構體變數,每個變數擁有相同的性質。

例如:#include

//定義結構體 student

struct student;

//顯示結構體的成員變數

void display(struct student stu)

int main()

執行結果:

小明的年齡是 15,成績是 92.500000

c++ 中的類也是一種構造型別,但是進行了一些擴充套件,類的成員不但可以是變數,還可以是函式;通過類定義出來的變數也有特定的稱呼,叫做「物件」。

例如:#incl程式設計客棧ude

//通過class關鍵字類定義類

class student

};int main()

執行結果與上例相同。

對於熟悉 c++ 的讀者,這段**並不規範,請忽略這一細節,本節的重點是引入類和物件的概念。這套 c++ 教程是在c的基礎上編寫的,我並不希望一開始就提出過多的 c++ 概念,讓讀者吃不消,我希望讀者從c逐漸過渡到 c++,從第二章開始編寫規範的 c++ **。也就是說,包括本節在內,第一章有很多不規範的 c++ **,再次請熟悉 c++ 的讀者忽略。

class和public都是 c++ 中的關鍵字,初學者請先忽略public(後續會深入講解),把注意力集中在 class 上。

c語言中的 struct 只能包含變數,而 c++ 中的 class 除了可以包含變數,還可以包含函式。display()是用來處理成員變數的函式,在c語言中,我們將它放在了struct student外面,它和成員變數是分離的;而在 c++ 中,我們將它放在了 class student內部,使它和成員變數聚集在一起,看起來更像乙個整體。

結構體和類都可以看做一種由使用者自己定義的複雜資料型別,在c語言中可以通過結構體名來定義變數,在 c++ 中可以通過類名來定義變數。不同的是,通過結構體定義出來的變數還是叫變數,而通過類定義出來的變數有了新的名稱,叫做物件(object)。

在第二段**中,我們先通過class關鍵字定義了乙個類student,然後又通過student類建立了乙個物件 stu1。變數和函式都是類的成員,建立物件後就可以通過點號.來使用它們。

可以將模擬喻成圖紙,物件比喻成零件,圖紙說明了零件的引數(成員變數)及其承程式設計客棧擔的任務(成員函式);一張圖紙可以生產出多個具有相同性質的零件,不同圖紙可以生產不同型別的零件。

類只是一張圖紙,起到說明的作用,不占用記憶體空間;物件才是具體的零件,要有地方來存放,才會占用記憶體空間。

在 c++ 中,通過類名就可以建立物件,即將圖紙生產成零件,這個過程式設計客棧程叫做類的例項化,因此也稱物件是類的乙個例項(instance)。

有些資料也將類的成員變數稱為屬性(property),將類的成員函式稱為方法(method)。

類是乙個通用的概念,c++、j**a、c#、php 等很多程式語言中都支援類,都可以通過類建立物件。可以將類看做是結構體的公升級版,c語言的晚輩們看到了c語言的不足,嘗試加以改善,繼承了結構體的思想,並進行了公升級,讓程式設計師在開發或擴充套件大中型專案時更加容易。

因為c++、j**a、c#、php等語言都支援類和物件,所以使用這些語言編寫程式也被稱為物件導向程式設計,這些語言也被稱為物件導向的程式語言。c語言因為不支援類和物件的概念,被稱為面向過程的程式語言。

在c語言中,我們會把重複使用或具有某項功能的**封裝成乙個函式,將擁有相關功能的多個函式放在乙個原始檔,再提供乙個對應的標頭檔案,這就是乙個模組。使用模組時,引入對應的標頭檔案就可以。

敏捷到底是什麼?

文 ivar jacobson 在支援軟體工程 比如rational統一過程rup 與敏捷陣營 比如scrum或是xp 之間,人們一直存在著衝突。也不難理解,因為這兩種方法間都是在用著彼此並不相容的方式來描述的。其實大可不必,因為他們背後的觀點全然是相輔相成的。關鍵在於該如何用對兩者來說都公平的方式...

我們到底是什麼?

我們到底是什麼?我們是一種生物電流 生物電流有幾種狀態,喜怒哀樂等,可以根據外部環境進行自我切換 該種生物電流附屬在一種器官硬體上面 我們可以從器官硬體上感知一些資訊,產生新的資訊生物電流,新產生的生物電流符合原先的標準 我們可以把資訊電流儲存在器官硬體上,但具體如何儲存等資訊無法被我們感知 我們的...

SDN到底是什麼

sdn到底是什麼?雖然這個概念已經被炒到了,但還沒有人對其給出乙個明確的概念。盛科網路總監張衛峰撰寫了自己關注sdn以來,對其認識的四個階段,最後乙個階段又回到了sdn字面的意思軟體定義網路,每個階段作者的新觀點,也會給我們帶來一些啟發。以下為原文 我對sdn的認識可以分為四個階段,最後乙個階段是在...