C++ 中的動態綁定:解釋、函數和實現

已發表: 2021-02-04

目錄

介紹

本文將引導您完成 C++ 中動態綁定的工作 您應該對 C++ 中的繼承和靜態綁定的工作有基本的了解。 這是因為動態綁定消除了靜態綁定的一些限制。 我們將向您展示動態綁定是如何有用的,以及適當和簡單的代碼。

什麼是動態綁定?

通過綁定,我們通常是指將一個對象與另一個對象聯繫起來。 在編程語言方面,綁定並沒有太大的不同。 它是函數定義和函數調用的鏈接。 但為什麼是“動態的”? 簡而言之,動態綁定只是將選擇或選擇要運行的函數延遲到運行時。 在 C++ 中使用動態綁定,我們可以根據對象的底層類型選擇可以執行的函數。

使用靜態綁定的程序員無法提供這種靈活性。 靜態綁定過去發生在編譯時而不是運行時。 此外,靜態綁定在編譯時建立了函數調用和定義的鏈接,而正如您現在所知,動態綁定直到運行時才這樣做。

動態綁定允許我們通過為我們提供在運行時選擇我們需要的函數類型的靈活性來忽略類型差異 通過檢查這個語句,我們可以理解動態綁定允許我們只使用一個函數名來處理不同的對象。 這降低了代碼複雜性,也使程序員在調試時更容易。

虛函數

我們已經討論了很多C++ 中的動態綁定。 但是如何進行呢? 要在 C++ 代碼中實現動態綁定,您需要使用“虛擬函數”。 那麼什麼是虛函數呢?

本文不會深入討論虛函數,因為它們對於單獨的文章來說已經足夠重要了。 但是您將獲得有關虛函數的足夠信息,以便清楚地理解動態綁定。

虛函數是特殊的成員函數,通過指針(或引用)進行的調用在運行時根據對象的類型和指針進行解析。 簡單來說,如果在基類中定義虛函數,就可以在派生類中重寫該函數。

這就是虛函數的威力。 在 C++ 中,您在函數定義的開頭使用關鍵字“virtual”來定義虛函數。 您可能不必為基類的每個派生類重複關鍵字 virtual,因為一旦將函數聲明為“虛擬”,它將在所有派生類中保持“虛擬”。

C++ 實現

那是關於虛函數的。 現在讓我們看一個程序來理解C++ 中的動態綁定

程序#1

我們看到兩個類:- A 類是“基”類,而 B 類是“派生類”。 在這兩個類中,都有一個同名“display”的函數。 在父類中,有另一個名為 final_print() 的函數調用 display() 函數。 在 main() 函數中,我們為兩個不同的類創建兩個不同的對象,調用相同的 display() 函數。

讓我們看看上面程序的輸出。

程序 #1 的輸出:

正如預期的那樣,輸出執行基類的 display() 函數兩次,因為它是在編譯時定義的(靜態綁定)。 但這不是我們想要的輸出。

現在要將上述代碼轉換為動態綁定代碼,我們需要使用虛函數。 讓我們看看如何做到這一點。

程序#2:

我們只需在 A 類和 B 類中為我們的 display() 函數添加“virtual”關鍵字,從而使它們成為虛擬函數。 這是唯一需要的改變。 就像之前一樣,我們使用兩個不同的對象調用同一個 final_print() 函數。 讓我們看看我們現在得到了什麼輸出。

程序 #2 的輸出

這是我們想要的輸出,我們使用函數的動態綁定得到它。

從世界頂級大學在線學習軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

在本文中,我們介紹了C++ 中動態綁定的概念 總而言之,動態綁定允許我們通過調用單個函數來處理不同的對象來靈活地處理。 從我們的代碼中可以明顯看出,我們通過創建兩個不同的對象來調用相同的函數 display() 來為我們提供兩個不同的輸出。 這是可能的,因為動態綁定發生在運行時,不像靜態綁定發生在編譯時。

如果您有興趣了解有關全棧開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目和任務, IIIT-B 校友身份,實用的實踐頂點項目和頂級公司的工作協助。

什麼是 C++ 編程語言?

C++ 是一種通用編程語言。 它是世界上使用最廣泛的編程語言之一。 C++ 是 C 語言的增強版本,並提供了促進面向對象編程的工具。 C ++是一種通用編程語言,而C是一種專用編程語言。 C++ 是作為 C 的擴展而創建的,以支持面向對象的編程,用於開發桌面應用程序、移動設備應用程序、嵌入式和實時系統以及 Web 應用程序和服務。 C++ 是一種命令式、過程式、多範式、已編譯的通用編程語言。 它支持結構化編程、面向對象編程和通用編程。 它具有動態類型系統和顯式內存管理。

什麼是面向對象編程?

OOP 是創建可重用、易於維護和可讀代碼的方法。 簡而言之,OOP 是一種基於圍繞現實世界對象設計軟件的編程範式。 例如,在 Java 中,如果您想設計一個處理書籍的軟件,您可以創建一個名為 Book 的類,然後為該類創建代表一本書的單獨實例(對象)。 這同樣適用於您需要在軟件中創建的其他類。

什麼是 C++ 中的動態綁定?

動態綁定將程序文本中標識符的含義與在運行時找到的標識符的定義相關聯。 這種意義關聯稱為綁定。 它是面向對象編程的基本原則。 動態綁定的標識符是面向對象的類層次結構的分支和葉子。 它們是動態的,因為它們是在運行時解決的,而不是在編譯時解決的。 面向對象的類層次結構的分支和葉子是動態的,因為它們綁定到從它們派生的類。