国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】多態(tài) ④ ( 多態(tài)實(shí)現(xiàn)原理 | C++ 聯(lián)編概念 | 鏈接屬性 | 內(nèi)部鏈接 | 外部鏈接 | 聯(lián)編與鏈接 | 靜態(tài)聯(lián)編 | 動(dòng)態(tài)聯(lián)編 | 聯(lián)編 與 virtual 關(guān)鍵字 )

這篇具有很好參考價(jià)值的文章主要介紹了【C++】多態(tài) ④ ( 多態(tài)實(shí)現(xiàn)原理 | C++ 聯(lián)編概念 | 鏈接屬性 | 內(nèi)部鏈接 | 外部鏈接 | 聯(lián)編與鏈接 | 靜態(tài)聯(lián)編 | 動(dòng)態(tài)聯(lián)編 | 聯(lián)編 與 virtual 關(guān)鍵字 )。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。





一、C++ 聯(lián)編概念




1、聯(lián)編引入


" 聯(lián)編 " Linkage 指的是 將 程序模塊 和 代碼 互相關(guān)聯(lián)的過程 , 將不同源文件中的 同名函數(shù) 或 變量 進(jìn)行鏈接 ;

在 C++ 語言中 , 每個(gè) 函數(shù) 或 變量 都有一個(gè) 鏈接屬性 , 該鏈接屬性決定了該 函數(shù) 或 變量 是否可以在其他源文件中使用 ;


聯(lián)編 是通過 聲明函數(shù)或變量 的 鏈接屬性 進(jìn)行控制 ;

  • 如果一個(gè) 函數(shù)或變量 具有外部鏈接屬性 , 則可以在其他源文件中使用該函數(shù)或變量 ;
  • 如果一個(gè) 函數(shù)或變量 具有內(nèi)部鏈接屬性 , 則只能在其所在的源文件中使用該函數(shù)或變量。

2、鏈接屬性 ( 內(nèi)部鏈接 | 外部鏈接 )


C++ 中的 鏈接屬性 有兩種 : 內(nèi)部鏈接 和 外部鏈接 ;

  • 內(nèi)部鏈接 : 使用 static 關(guān)鍵字 聲明 函數(shù) 或 變量 , 該 函數(shù) 或 變量 就具有了 內(nèi)部鏈接 屬性 ; 具有 內(nèi)部鏈接 屬性的函數(shù)或變量 只能在其所在的源文件中使用 , 不能在其他源文件中使用 ;
  • 外部鏈接 : 沒有使用 static 關(guān)鍵字 聲明 函數(shù) 或 變量 , 該 函數(shù)或變量 就具有了 外部鏈接 屬性 ; 具有 外部鏈接 屬性的函數(shù)或變量 可以在其他源文件中使用 , 使用前需要再這些源文件中聲明 函數(shù)或 變量 ;

3、聯(lián)編 ( C++ 語言 ) 與 鏈接 ( C 語言 )


C++中的 聯(lián)編概念 與 C 語言中的 鏈接概念 :

  • 鏈接 : 在 C 語言中 , 鏈接 是指在 編譯時(shí)將不同源文件中的函數(shù)和變量鏈接在一起的過程 , 具體指的是 將 二進(jìn)制的 .o 機(jī)器碼文件 , 與 .a 靜態(tài)庫 或 .so 動(dòng)態(tài)庫 , 拼裝成可執(zhí)行文件 ;
  • 聯(lián)編 : 在 C++ 中 , 聯(lián)編 是在編譯時(shí)進(jìn)行的 , 即使函數(shù)或變量的鏈接屬性為外部鏈接 , 也需要在其他源文件中進(jìn)行聲明才能使用 ;

C 語言編譯過程 參考 【C 語言】編譯過程 分析 ( 預(yù)處理 | 編譯 | 匯編 | 鏈接 | 宏定義 | 條件編譯 | 編譯器指示字 ) 博客 ;

鏈接操作 是 將 二進(jìn)制的 .o 機(jī)器碼文件 , 與 .a 靜態(tài)庫 或 .so 動(dòng)態(tài)庫 , 拼裝成可執(zhí)行文件 ;

【C++】多態(tài) ④ ( 多態(tài)實(shí)現(xiàn)原理 | C++ 聯(lián)編概念 | 鏈接屬性 | 內(nèi)部鏈接 | 外部鏈接 | 聯(lián)編與鏈接 | 靜態(tài)聯(lián)編 | 動(dòng)態(tài)聯(lián)編 | 聯(lián)編 與 virtual 關(guān)鍵字 ),C++,c++,聯(lián)編,動(dòng)態(tài)聯(lián)編,多態(tài),virtual,原力計(jì)劃


4、靜態(tài)聯(lián)編


靜態(tài)聯(lián)編 是指在 編譯時(shí) 確定的 變量 和 函數(shù) 的 鏈接關(guān)系 ,

由 編譯器 根據(jù) 函數(shù)和變量的聲明 以及它們所在的 源文件 來確定它們之間的 鏈接關(guān)系 ;


在 C++ 語言中 , 所有的 函數(shù)和變量 默認(rèn)都具有 外部鏈接 屬性 ,

因此 , 只要在 不同的源文件 中 聲明了相同的函數(shù)或變量名 , 就可以在 鏈接 時(shí)將它們 鏈接 在一起 ;


5、動(dòng)態(tài)聯(lián)編


" 動(dòng)態(tài)聯(lián)編 " 是指在 運(yùn)行時(shí) 確定的 鏈接關(guān)系 , 它是由 程序 在 運(yùn)行時(shí) 根據(jù)需要 動(dòng)態(tài)地 加載和鏈接 不同的模塊 ;

C++ 語言中 沒有 直接支持 動(dòng)態(tài)聯(lián)編 的特性 , 但可以使用 動(dòng)態(tài)庫 技術(shù)來實(shí)現(xiàn)動(dòng)態(tài)鏈接 ;

進(jìn)行 動(dòng)態(tài)鏈接 時(shí) , 使用 外部鏈接 屬性的 函數(shù)或變量名 來 鏈接 不同的模塊 ;


靜態(tài)聯(lián)編 和 動(dòng)態(tài)聯(lián)編 是兩種不同的鏈接方式 , 其 鏈接時(shí)間 和 鏈接方式 都不同 ;

  • 靜態(tài)聯(lián)編 發(fā)生在 編譯時(shí) ;
  • 動(dòng)態(tài)聯(lián)編 發(fā)生在 運(yùn)行時(shí) ;




二、多態(tài)實(shí)現(xiàn)原理 - 聯(lián)編 與 virtual 關(guān)鍵字



如果 函數(shù)前 不使用 virtual 關(guān)鍵字 修飾 , 就是 靜態(tài)聯(lián)編 ;

也就是 該 不使用 virtual 關(guān)鍵字 修飾的 函數(shù), 在 編譯器 編譯階段 , 就已經(jīng)確定了 , 如何執(zhí)行該函數(shù) , 之后就無法修改了 ;


在 " 多態(tài) " 中 , 如果 使用 virtual 關(guān)鍵字 修飾 函數(shù) , 該函數(shù)就是 動(dòng)態(tài)聯(lián)編 ;

在 編譯時(shí) , 不確定 執(zhí)行 哪個(gè)函數(shù) ,

在 運(yùn)行時(shí) , 才確定 要執(zhí)行 哪個(gè) 函數(shù) ;文章來源地址http://www.zghlxwxcb.cn/news/detail-743445.html

到了這里,關(guān)于【C++】多態(tài) ④ ( 多態(tài)實(shí)現(xiàn)原理 | C++ 聯(lián)編概念 | 鏈接屬性 | 內(nèi)部鏈接 | 外部鏈接 | 聯(lián)編與鏈接 | 靜態(tài)聯(lián)編 | 動(dòng)態(tài)聯(lián)編 | 聯(lián)編 與 virtual 關(guān)鍵字 )的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C++】多態(tài)的概念和簡單介紹、虛函數(shù)、虛函數(shù)重寫、多態(tài)構(gòu)成的條件、重載、重寫、重定義

    【C++】多態(tài)的概念和簡單介紹、虛函數(shù)、虛函數(shù)重寫、多態(tài)構(gòu)成的條件、重載、重寫、重定義

    ? ??C++中的多態(tài)是一種面向?qū)ο缶幊痰奶匦裕?它允許不同的對(duì)象對(duì)同一個(gè)消息做出不同的響應(yīng)。 多態(tài)性能夠提高代碼的可復(fù)用性和靈活性,使得代碼更加模塊化和可擴(kuò)展。 ?? 多態(tài)性是通過使用繼承和虛函數(shù)實(shí)現(xiàn)的。 當(dāng)一個(gè)類被聲明為虛函數(shù)時(shí),它可以被子類重寫,并

    2024年02月13日
    瀏覽(25)
  • [C++] 多態(tài)(下) -- 多態(tài)原理 -- 動(dòng)靜態(tài)綁定

    [C++] 多態(tài)(下) -- 多態(tài)原理 -- 動(dòng)靜態(tài)綁定

    上一篇文章我們了解了虛函數(shù)表,虛函數(shù)表指針,本篇文章我們來了解多態(tài)的底層原理,更好的理解多態(tài)的機(jī)制。 [C++] 多態(tài)(上) – 抽象類、虛函數(shù)、虛函數(shù)表 下面這段代碼中,F(xiàn)unc函數(shù)傳Person調(diào)用的Person::BuyTicket,傳Student調(diào)用的是Student::BuyTicket,這就是多態(tài)調(diào)用,但是這里我

    2024年02月04日
    瀏覽(18)
  • C++修煉之路之多態(tài)---多態(tài)的原理(虛函數(shù)表)

    C++修煉之路之多態(tài)---多態(tài)的原理(虛函數(shù)表)

    目錄 一:多態(tài)的原理? 1.虛函數(shù)表 ?2.原理分析 3.對(duì)于虛表存在哪里的探討 4.對(duì)于是不是所有的虛函數(shù)都要存進(jìn)虛函數(shù)表的探討 二:多繼承中的虛函數(shù)表 三:常見的問答題? 接下來的日子會(huì)順順利利,萬事勝意,生活明朗-----------林辭憂? 接上篇的多態(tài)的介紹后,接下來介紹

    2024年04月26日
    瀏覽(24)
  • 【C++】多態(tài)及原理

    【C++】多態(tài)及原理

    1.多態(tài)的概念 多態(tài),顧名思義就是多種狀態(tài), 具體點(diǎn)就是去完成某種行為,但是通過不同的對(duì)象去完成某種行為都會(huì)產(chǎn)生不同的狀態(tài),這就是多態(tài) 比如買票這個(gè)行為。當(dāng) 普通人 買票時(shí),是全價(jià)買票; 學(xué)生 買票時(shí),是半價(jià)買票; 軍人 買票時(shí)是優(yōu) 先買票。 這就是不同的對(duì)象

    2024年02月16日
    瀏覽(26)
  • C++中多態(tài)的原理

    C++中多態(tài)的原理

    上篇講解了多態(tài)的原理,這篇文章來詳細(xì)講解一下多態(tài)的原理。 這里有一道??脊P試題:sizeof(Base)是多少? 為什么不是8? 可以調(diào)試帶大家看一下。 仔細(xì)看,對(duì)象的頭部多了一個(gè)指針。 這個(gè)指針叫做虛函數(shù)表指針。 上面不重要,重要的是下面的東西,多態(tài)的原理。 這個(gè)指

    2024年02月04日
    瀏覽(16)
  • 【C++】詳解多態(tài)的底層原理

    【C++】詳解多態(tài)的底層原理

    上一篇文章我們學(xué)習(xí)了多態(tài)的語法,想必大家都會(huì)有很多疑問,這篇文章,我們就來帶大家看看多態(tài)是如何實(shí)現(xiàn)的,它底層的原理是怎樣的… 需要聲明的,本文中的代碼及解釋都是在vs2022下的x86程序中,涉及的指針都是4bytes。 如果要其他平臺(tái)下,部分代碼需要改動(dòng)。比如:

    2024年02月16日
    瀏覽(27)
  • C++中的多態(tài)你真的了解嗎?多態(tài)原理全面具體講解

    C++中的多態(tài)你真的了解嗎?多態(tài)原理全面具體講解

    目錄 1. 多態(tài)的概念 2. 多態(tài)的定義及實(shí)現(xiàn) 2.1 多態(tài)的構(gòu)成條件 2.2 虛函數(shù) 2.3 虛函數(shù)的重寫 2.4 C++11 override 和 final 2.5 重載、覆蓋(重寫)、隱藏(重定義)的對(duì)比 3. 抽象類 3.1 概念 4. 多態(tài)的原理 4.1 虛函數(shù)表 4.2多態(tài)的原理 4.3 動(dòng)態(tài)綁定與靜態(tài)綁定 5. 單繼承和多繼承關(guān)系中的虛函數(shù)表

    2024年02月04日
    瀏覽(26)
  • C++:多態(tài)的內(nèi)容和底層原理

    C++:多態(tài)的內(nèi)容和底層原理

    本篇總結(jié) C++ 中多態(tài)的基本內(nèi)容和原理實(shí)現(xiàn)和一些邊角內(nèi)容 首先要清楚多態(tài)是什么,是用來做什么的? 多態(tài)從字面意思來講,就是多種形態(tài), 完成一個(gè)事情,不同的人去完成會(huì)有不同的結(jié)果和狀態(tài) ,這樣的情況就叫做多態(tài) 多態(tài)是不同繼承關(guān)系的類對(duì)象,在調(diào)用一個(gè)函數(shù)的時(shí)

    2024年02月08日
    瀏覽(23)
  • C++學(xué)習(xí)Day07之動(dòng)態(tài)聯(lián)編和靜態(tài)聯(lián)編

    C++學(xué)習(xí)Day07之動(dòng)態(tài)聯(lián)編和靜態(tài)聯(lián)編

    C++ 中的聯(lián)編(Binding)分為動(dòng)態(tài)聯(lián)編(Dynamic Binding)和靜態(tài)聯(lián)編(Static Binding)兩種方式。它們分別指的是在運(yùn)行時(shí)和編譯時(shí)確定函數(shù)或方法的調(diào)用方式的過程。 靜態(tài)聯(lián)編是指在編譯時(shí)確定函數(shù)或方法的調(diào)用方式。在編譯階段,編譯器根據(jù)調(diào)用函數(shù)或方法的類型和參數(shù)類型來

    2024年02月21日
    瀏覽(10)
  • 【C++】多態(tài)的底層原理(虛函數(shù)表)

    【C++】多態(tài)的底層原理(虛函數(shù)表)

    ??博客主頁: 主頁 ??系列專欄: C++ ??感謝大家點(diǎn)贊??收藏?評(píng)論?? ??期待與大家一起進(jìn)步! 通過觀察測試我們發(fā)現(xiàn)b對(duì)象是8bytes,除了_b成員,還多一個(gè)__vfptr放在對(duì)象的前面(注意有些平臺(tái)可能會(huì)放到對(duì)象的最后面,這個(gè)跟平臺(tái)有關(guān)),對(duì)象中的這個(gè)指針我們叫做虛函

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包