最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++類的繼承和派生及指針安全引用

 更新時間:2022年03月11日 08:35:25   作者:機器學(xué)習(xí)入坑者  
這篇文章主要介紹了C++類的繼承和派生及指針安全引用,繼承指從現(xiàn)有類獲得其特性,派生指從已有類產(chǎn)生新的類,指針和引用并存,二者似乎有很多相同點,但是又不完全相同,下面關(guān)于兩者的相關(guān)資料,需要的小伙伴可以參考一下

一、繼承和paisheng

1、繼承和派生的基礎(chǔ)概念

繼承指從現(xiàn)有類獲得其特性,派生指從已有類產(chǎn)生新的類。原有的類稱為基類或父類,新生的類稱為子類或派生類。當(dāng)子類只有一個父類時稱為單繼承,當(dāng)子類含有多個父類時稱為多繼承。如果基類A直接參與了派生類B的派生過程,那么A類稱為直接基類;基類的基類稱為間接基類。

2、如何定義子類

定義子類時,需要指明其父類,及對父類的繼承方式(public、private、protect):

class 子類名: 繼承方式 父類1, 繼承方式 父類2{}
子類不僅繼承父類的全部成員,還要定義新的數(shù)據(jù)成員和函數(shù)成員,新增的成員稱為子類成員(或稱為派生類成員)。

3、吸收和改造父類成員、添加新成員

在子類繼承父類的過程中,有下面?zhèn)€要點:

  • 子類繼承父類除去構(gòu)造函數(shù)和析構(gòu)函數(shù)外所有的成員;
  • 子類改造從父類繼承來的成員,包括訪問控制、覆蓋和隱藏;
  • 添加父類沒有的新成員;

下面定義的Animal類,作為Duck類的父類,具體定義如下:

class Animal {
public:
?? ?Animal(int age_) { age = age_; printf("Init Animal \n"); }
?? ?void eat() { printf("Animal eating! \n"); }
?? ?void run() { printf("Duck Running! \n"); }
private:
?? ?int age=0;
};

class Duck:public Animal {
public:
? ? /// 子類需要完成父類的初始化任務(wù)
? ? /// Duck類會調(diào)用Animal類的初始化函數(shù)
?? ?Duck(int age_) :Animal(age_) { printf("init Duck! \n"); };
?? ?void eat() { printf("Duck eating! \n"); }
};

上述代碼中,對應(yīng)三個過程如下:

(1)吸收:Duck類繼承了Animal類除去構(gòu)造和析構(gòu)函數(shù)外的所有成員,所以Duck類對象可以使用Animal類的run()函數(shù):

duck.run();

(2)改造:Duck類定義了和父類同名同返回類型同參數(shù)的eat()函數(shù),屬于函數(shù)的覆蓋(如果返回類型和參數(shù)表不同屬于重載),直接使用函數(shù)名訪問的是Duck類的eat()函數(shù),稱為同名隱藏:

duck.eat();

(3)添加:添加普通函數(shù)成員和數(shù)據(jù)成員的語法與一般類添加成員時相同,難點在于構(gòu)造函數(shù)和析構(gòu)函數(shù),因為子類涉及到父類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。

二、指針引用

1、指針和引用的異同

C++中,指針和引用并存,二者似乎有很多相同點,但是又不完全相同。有些情況下指針能做到的,引用也能做到,那么什么場合下適合使用指針,又是什么場合下適合使用引用呢?下面不是根據(jù)二者在性質(zhì)上的差異進行分類,而是直接從使用的角度進行歸類。

首先分析二者的相同點:指針和引用在作為函數(shù)參數(shù)傳遞時,都不是傳遞的值,可以認為二者傳遞的都是地址,也就是說二者都能有效減少輸出傳遞過程的內(nèi)存開銷。

其次是二者的不同點:引用必須在聲明的同時進行初始化,指向一個存在的對象。而指針并不要求必須進行初始化,同時指針還可以被定義為空指針,即不指向任何對象。另一點的顯著不同是,引用一旦指向某個對象就不能再去指向別的對象,而指針可以更換其指向的對象。

根據(jù)上述的相同點和不同點可以看出,引用更像是一個常量指針。因此,引用能實現(xiàn)的功能指針都能實現(xiàn)。C++并不是為了兼容C才使用引用這個概念,那么引用必然有它的優(yōu)越之處。按照鄭莉老師書中所介紹的,“函數(shù)參數(shù)雙向傳遞和避免使用指針的算術(shù)運算”運算時,引用具有安全處理數(shù)據(jù)的效果,此時使用指針會增加代碼的復(fù)雜度。(個人認為:引用的作用依舊不是明顯,反而會造成不同程序員的代碼可讀性差,可能是自己還沒有真正掌握引用的強大之處)。

指針和引用還有很多需要進行討論的地方,根據(jù)二者的語法與定義都可以很自然的推理出來,比如new申請的內(nèi)存首地址只能賦值給指針,等等。

2、指針的安全隱患

指針雖然強大,但是這種針對地址的操作對程序員的水平要求也比較高,因而存在著很多的安全隱患。比如,使用指針處理數(shù)組時和可能出現(xiàn)越界問題,如果沒有下標(biāo)檢查就會造成難以預(yù)料的影響。

當(dāng)然,指針的安全隱患問題還有很多,但是自己目前僅僅理解了一點,等以后理解的更加深入再進行記錄。

到此這篇關(guān)于C++類的繼承和派生及指針安全引用的文章就介紹到這了,更多相關(guān)C++類繼承和指針引用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • QT中幾種常用的排序函數(shù)用法總結(jié)

    QT中幾種常用的排序函數(shù)用法總結(jié)

    Qt是目前最先進、最完整的跨平臺C++開發(fā)工具,下面這篇文章主要給大家介紹了關(guān)于QT中幾種常用的排序函數(shù)用法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • C++的類型轉(zhuǎn)換詳細介紹

    C++的類型轉(zhuǎn)換詳細介紹

    這篇文章主要介紹了C++的類型轉(zhuǎn)換詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++實現(xiàn)LeetCode(151.翻轉(zhuǎn)字符串中的單詞)

    C++實現(xiàn)LeetCode(151.翻轉(zhuǎn)字符串中的單詞)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(151.翻轉(zhuǎn)字符串中的單詞),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c++實現(xiàn)合并文件以及拆分實例代碼

    c++實現(xiàn)合并文件以及拆分實例代碼

    這篇文章主要介紹了c++實現(xiàn)合并文件以及拆分實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • C++之編寫高效Makefile文件最佳方法

    C++之編寫高效Makefile文件最佳方法

    在軟件開發(fā)過程中,Makefile是一個非常重要的工具,它可以幫助我們自動化構(gòu)建、編譯、測試和部署,然而,編寫高效的Makefile文件并不是一件容易的事情。在本文中,我們將討論如何編寫高效的Makefile文件,以提高開發(fā)效率和產(chǎn)品質(zhì)量,需要的朋友可以參考下
    2023-05-05
  • c語言中的二級指針做函數(shù)參數(shù)說明

    c語言中的二級指針做函數(shù)參數(shù)說明

    這篇文章主要介紹了c語言中的二級指針做函數(shù)參數(shù)說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • C++單例模式應(yīng)用實例

    C++單例模式應(yīng)用實例

    這篇文章主要介紹了C++單例模式應(yīng)用實例,詳細講述了單例模式的原理與結(jié)構(gòu),及相關(guān)的打印機應(yīng)用實例,需要的朋友可以參考下
    2014-10-10
  • C++代碼實現(xiàn)網(wǎng)絡(luò)Ping功能

    C++代碼實現(xiàn)網(wǎng)絡(luò)Ping功能

    這篇文章主要介紹了C++代碼實現(xiàn)網(wǎng)絡(luò)Ping功能,Ping命令被送到本地計算機的IP軟件,該命令永不退出該計算機,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2021-08-08
  • C++ txt 文件讀取,并寫入結(jié)構(gòu)體中的操作

    C++ txt 文件讀取,并寫入結(jié)構(gòu)體中的操作

    這篇文章主要介紹了C++ txt 文件讀取,并寫入結(jié)構(gòu)體中的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C++實現(xiàn)二叉樹的堂兄弟節(jié)點查詢

    C++實現(xiàn)二叉樹的堂兄弟節(jié)點查詢

    C++實現(xiàn)二叉樹的堂兄弟節(jié)點查詢,是指在二叉樹中,找到兩個節(jié)點深度相同但父節(jié)點不同的節(jié)點,即為堂兄弟節(jié)點。實現(xiàn)這一功能可以通過遍歷二叉樹并記錄節(jié)點深度和父節(jié)點來實現(xiàn)
    2023-04-04

最新評論

东港市| 宜兴市| 江安县| 航空| 滁州市| 亳州市| 武川县| 葫芦岛市| 老河口市| 汽车| 玛多县| 翼城县| 临江市| 永嘉县| 淄博市| 连州市| 什邡市| 石城县| 略阳县| 绍兴市| 白沙| 海淀区| 会同县| 裕民县| 三明市| 咸宁市| 北海市| 双峰县| 电白县| 那坡县| 太湖县| 蒲江县| 扶沟县| 土默特右旗| 永登县| 普格县| 获嘉县| 竹山县| 精河县| 黑河市| 临猗县|