簡單介紹C++
語言特點
支持數據封裝和數據隱藏
在C++中,類是支持數據封裝的工具,對象則是數據封裝的實現。C++通過建立用戶定義類支持數據封裝和數據隱藏。
在面向對象的程序設計中,將數據和對該數據進行合法操作的函數封裝在一起作為一個類的定義。對象被說明為具有一個給定類的變量。每個給定類的對象包含這個類所規定的若干私有成員、公有成員及保護成員。完好定義的類一旦建立,就可看成完全封裝的實體,可以作為一個整體單元使用。類的實際內部工作隱藏起來,使用完好定義的類的用戶不需要知道類是如何工作的,只要知道如何使用它即可。
支持繼承和重用
在C++現有類的基礎上可以聲明新類型,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程序結構,明確類間關系,并且充分利用已有的類來完成更復雜、深入的開發。新定義的類為子類,成為派生類。它可以從父類那里繼承所有非私有的屬性和方法,作為自己的成員。
支持多態性
采用多態性為每個類指定表現行為。多態性形成由父類和它們的子類組成的一個樹型結構。在這個樹中的每個子類可以接收一個或多個具有相同名字的消息。當一個消息被這個樹中一個類的一個對象接收時,這個對象動態地決定給予子類對象的消息的某種用法。多態性的這一特性允許使用高級抽象。
繼承性和多態性的組合,可以輕易地生成一系列雖然類似但獨一無二的對象。由于繼承性,這些對象共享許多相似的特征。由于多態性,一個對象可有獨特的表現方式,而另一個對象有另一種表現方式。
工作原理編輯
C++語言的程序因為要體現高性能,所以都是編譯型的。但其開發環境,為了方便測試,將調試環境做成解釋型的。即開發過程中,以解釋型的逐條語句執行方式來進行調試,以編譯型的脫離開發環境而啟動運行的方式來生成程序最終的執行代碼。
為什么C++支持重載而C語言不支持重載
什么是重載
所謂的重載就是函數的參數不同,函數的函數名相同,返回值可以相同也可以不同.這就是C++的重載.理解了重載接下來就需要回答一下為什么C++支持重載而C語言不支持重載.
我們都知道,所謂的編譯性語言都需要經過一下幾步才能運行
1.預處理
條件編譯,頭文件展開,去注釋,宏定義,生成一個.i文件
2.編譯
檢查語法生成匯編代碼.生成一個.s文件
3.匯編
將匯編代碼轉變為既機器代碼.生成一個.o文件
4.鏈接
在鏈接過程中主要任務是根據函數名稱找到對應的函數定義.
編譯器在對代碼進行編譯的過程中會將函數的函數名進重命名.
//代碼1
void swap(int a, int b)
{...
}
//代碼2
void swap(char a, char b)
{...
}
用上面的swap函數進行舉例子吧.在C語言中會將代碼一和代碼二swap函數都重新命名為_swap,但是在C++中會將代碼一函數名重新命名為_z8swapii,代碼二函數名重新命名為_z2swapcc,其中_z代表的是函數命名前綴,8代表的是參數字節,swap是函數名稱,i代表的是參數的類型,因此在C++中即使函數的名稱相同,但是經過編譯器的重新命名后,函數的名稱就會由于形參的不同而變的不同,因此在編譯器的眼里,它們兩個函數是不同的,所以也就支持了重載.