第一章:第一節:先從整體上去認識C++,它帶給了我們什麼?

大部分人對C語言與C++的關係有不同的看法,有的人認爲C++是C語言的一種昇華,有的則認爲他們是兩種完全不同的語言。其實這個問題,我覺得較真是毫無意義的,因爲每個人的水平能力不同認知就會不同,對於我個人來說,在剛開始學C++的時候,尤其是剛學到基於對象的時候,心裏想“哦操,誰這完全是兩種語言,C語言的思維壓根用不上,一用就懵逼!”。當時腦袋轉不過來,因爲C語言的思維方式(順序結構)根深蒂固,一開始有點排斥,可是知道我將C++基本學完,又有了新的認識,C++就是C語言的一個生化(個人觀點),可能隨着知識的深入,每個階段都會有不同的感受,沒必要較真。但是這個過程有必要存在,它標誌着我對他有了新的認識,說明我在進步。

上面一段是我對C++的認知的一個變化。也是我對於C++整體認知的一個過程縮影。

 

一、整體得去認識一下C++

一提到C++我想大部分人會說的下一句話“面嚮對象語言”。當初我也在“面向對象”上犯了一個很大的錯誤,我以爲我面對的所有C++語法都是面向對象,這導致了我從C語言轉到C++時花費了好長時間,因爲剛開始學沒找到C++與C語言的區別,不都是面向過程麼?這差點導致我放棄學C++。(以爲自己智商真的不夠用)還好沒放棄。

誒!總結一下無非是瞎跟着別人的腳步走,別人說C++就是面嚮對象語言,我就說C++就是面嚮對象語言,(當初什麼都不懂)。饒了很大一圈,可我並不認爲這是一件壞事,能發現別人的說法中存在不足、漏洞,說明我自己是在思考在進步。

1、C++語言特性:三部分也是三個階段

C++語言其實講了語言的三種特性:(三部分)

1)面向過程

      C++是基於C語言而開發(還有一種語言),基於C語言也就是兼容C語言。所以我們在大部分參考書中可以看到,前幾章基本上是在說C語言的知識,這也是爲什麼我們會說C++語言的第一個特性是面向過程(因爲他是基於C語言開發的)。

2)基於對象

     學着學着我們會認識一個新的單詞class,C++把它他叫做類。類的出現也預示着對象的出現

我們把不帶有繼承或多態的單一類的設計叫做基於對象設計。(這是我自己總結的)

很多人願意將class和C語言中的struct作類比。但是這裏一定要強調他們二者區別,其實我更喜歡將C++中的class定義爲是C語言中的struct的一個昇華。(二者有本質上的區別)語法上起碼就不一樣,我們要區分C語言中的struct和C++中的class和C++中的struct。

 C語言中struct與c++中的class和c++中的struct區別:

上圖說明c++中的class完全可以和c++中的struct看做是一樣的。 

1、C語言中struct與c++中的class區別:

 代碼如下:

#include<stdio.h>

typedef struct 
{
	int num;  // 定義一個變量

	//試圖像C++那樣定義或聲明一個函數
	void func(void);

	void func2(void)
	{

	}

	//定義一個函數指針
	int (*p)();

}student;

int main(void)
{

	return 0;
}

 

2、C++struct與c++中的class區別:

代碼如下:

#include<iostream>

typedef struct 
{
	int num;  // 定義一個變量
}student;

class C
{
	int num;
};

int main(void)
{
	student stu1;
	stu1.num;   // 可以訪問說明c++中的struct默認訪問權限是public。

	C c1;
	c1.num;    // 說用c++中的class默認訪問權限是private。
	return 0;
}

 

3)面向對象

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章