C++的基本认识
簡單介紹C++
語言特點(diǎn)
支持?jǐn)?shù)據(jù)封裝和數(shù)據(jù)隱藏
在C++中,類是支持?jǐn)?shù)據(jù)封裝的工具,對象則是數(shù)據(jù)封裝的實(shí)現(xiàn)。C++通過建立用戶定義類支持?jǐn)?shù)據(jù)封裝和數(shù)據(jù)隱藏。
在面向?qū)ο蟮某绦蛟O(shè)計中,將數(shù)據(jù)和對該數(shù)據(jù)進(jìn)行合法操作的函數(shù)封裝在一起作為一個類的定義。對象被說明為具有一個給定類的變量。每個給定類的對象包含這個類所規(guī)定的若干私有成員、公有成員及保護(hù)成員。完好定義的類一旦建立,就可看成完全封裝的實(shí)體,可以作為一個整體單元使用。類的實(shí)際內(nèi)部工作隱藏起來,使用完好定義的類的用戶不需要知道類是如何工作的,只要知道如何使用它即可。
支持繼承和重用
在C++現(xiàn)有類的基礎(chǔ)上可以聲明新類型,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程序結(jié)構(gòu),明確類間關(guān)系,并且充分利用已有的類來完成更復(fù)雜、深入的開發(fā)。新定義的類為子類,成為派生類。它可以從父類那里繼承所有非私有的屬性和方法,作為自己的成員。
支持多態(tài)性
采用多態(tài)性為每個類指定表現(xiàn)行為。多態(tài)性形成由父類和它們的子類組成的一個樹型結(jié)構(gòu)。在這個樹中的每個子類可以接收一個或多個具有相同名字的消息。當(dāng)一個消息被這個樹中一個類的一個對象接收時,這個對象動態(tài)地決定給予子類對象的消息的某種用法。多態(tài)性的這一特性允許使用高級抽象。
繼承性和多態(tài)性的組合,可以輕易地生成一系列雖然類似但獨(dú)一無二的對象。由于繼承性,這些對象共享許多相似的特征。由于多態(tài)性,一個對象可有獨(dú)特的表現(xiàn)方式,而另一個對象有另一種表現(xiàn)方式。
工作原理編輯
C++語言的程序因?yàn)橐w現(xiàn)高性能,所以都是編譯型的。但其開發(fā)環(huán)境,為了方便測試,將調(diào)試環(huán)境做成解釋型的。即開發(fā)過程中,以解釋型的逐條語句執(zhí)行方式來進(jìn)行調(diào)試,以編譯型的脫離開發(fā)環(huán)境而啟動運(yùn)行的方式來生成程序最終的執(zhí)行代碼。
為什么C++支持重載而C語言不支持重載
什么是重載
所謂的重載就是函數(shù)的參數(shù)不同,函數(shù)的函數(shù)名相同,返回值可以相同也可以不同.這就是C++的重載.理解了重載接下來就需要回答一下為什么C++支持重載而C語言不支持重載.
我們都知道,所謂的編譯性語言都需要經(jīng)過一下幾步才能運(yùn)行
1.預(yù)處理
條件編譯,頭文件展開,去注釋,宏定義,生成一個.i文件
2.編譯
檢查語法生成匯編代碼.生成一個.s文件
3.匯編
將匯編代碼轉(zhuǎn)變?yōu)榧葯C(jī)器代碼.生成一個.o文件
4.鏈接
在鏈接過程中主要任務(wù)是根據(jù)函數(shù)名稱找到對應(yīng)的函數(shù)定義.
編譯器在對代碼進(jìn)行編譯的過程中會將函數(shù)的函數(shù)名進(jìn)重命名.
用上面的swap函數(shù)進(jìn)行舉例子吧.在C語言中會將代碼一和代碼二swap函數(shù)都重新命名為_swap,但是在C++中會將代碼一函數(shù)名重新命名為_z8swapii,代碼二函數(shù)名重新命名為_z2swapcc,其中_z代表的是函數(shù)命名前綴,8代表的是參數(shù)字節(jié),swap是函數(shù)名稱,i代表的是參數(shù)的類型,因此在C++中即使函數(shù)的名稱相同,但是經(jīng)過編譯器的重新命名后,函數(shù)的名稱就會由于形參的不同而變的不同,因此在編譯器的眼里,它們兩個函數(shù)是不同的,所以也就支持了重載.
總結(jié)
- 上一篇: 输卵管堵塞的费用
- 下一篇: 成都欢乐谷可以带狗吗