亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、繼承和paisheng

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

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

2、如何定義子類

定義子類時(shí),需要指明其父類,及對(duì)父類的繼承方式(publicprivate、protect):

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

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

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

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

下面定義的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類會(huì)調(diào)用Animal類的初始化函數(shù)
?? ?Duck(int age_) :Animal(age_) { printf("init Duck! \n"); };
?? ?void eat() { printf("Duck eating! \n"); }
};

上述代碼中,對(duì)應(yīng)三個(gè)過(guò)程如下:

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

duck.run();

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

duck.eat();

(3)添加:添加普通函數(shù)成員和數(shù)據(jù)成員的語(yǔ)法與一般類添加成員時(shí)相同,難點(diǎn)在于構(gòu)造函數(shù)和析構(gòu)函數(shù),因?yàn)樽宇惿婕暗礁割惖臉?gòu)造函數(shù)和析構(gòu)函數(shù)。

二、指針引用

1、指針和引用的異同

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

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

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

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

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

2、指針的安全隱患

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

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

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

相關(guān)文章

  • Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解

    Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-01-01
  • 關(guān)于C++11中限定作用域的枚舉類型的問(wèn)題

    關(guān)于C++11中限定作用域的枚舉類型的問(wèn)題

    C++中有兩種類型的枚舉:不限定作用域的枚舉類型和限定作用域的枚舉類型。限定作用域的枚舉類型是C++11標(biāo)準(zhǔn)引入的新類型,對(duì)C++11中限定作用域的枚舉類型相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-01-01
  • 一起來(lái)看看C語(yǔ)言線性表的線性鏈表

    一起來(lái)看看C語(yǔ)言線性表的線性鏈表

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言線性表的線性鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C++找出字符串中出現(xiàn)最多的字符和次數(shù),時(shí)間復(fù)雜度小于O(n^2)

    C++找出字符串中出現(xiàn)最多的字符和次數(shù),時(shí)間復(fù)雜度小于O(n^2)

    今天小編就為大家分享一篇關(guān)于C++找出字符串中出現(xiàn)最多的字符和次數(shù),時(shí)間復(fù)雜度小于O(n^2),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • c++ 預(yù)處理之正整型實(shí)現(xiàn)方法

    c++ 預(yù)處理之正整型實(shí)現(xiàn)方法

    這篇文章主要介紹了c++ 預(yù)處理之正整型實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-07-07
  • C++標(biāo)準(zhǔn)模板庫(kù)STL的介紹

    C++標(biāo)準(zhǔn)模板庫(kù)STL的介紹

    今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)模板庫(kù)STL的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • C語(yǔ)言中的字符型數(shù)據(jù)與ASCII碼表

    C語(yǔ)言中的字符型數(shù)據(jù)與ASCII碼表

    這篇文章主要介紹了C語(yǔ)言中的字符型數(shù)據(jù)與ASCII碼表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解C++ sizeof(下)

    詳解C++ sizeof(下)

    這篇文章主要介紹了C++ sizeof的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C++?typedef常見(jiàn)用法詳解

    C++?typedef常見(jiàn)用法詳解

    這篇文章主要介紹了C++?typedef用法詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • C++?結(jié)合?opencv讀取圖片與視頻的方法

    C++?結(jié)合?opencv讀取圖片與視頻的方法

    這篇文章主要介紹了C++?結(jié)合?opencv讀取圖片與視頻,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06

最新評(píng)論