C++筆記之重載和重寫辨別
code review!
文章目錄
- C++筆記之重載和重寫辨別
- 重載(overloading)
- 重寫(Overriding)
在C++中,重載(overloading)和重寫(overriding)是面向對象編程中的兩個重要概念,它們用于不同的目的和場景。
重載(overloading)
重載(Overloading)是指在同一個作用域內,通過改變函數的參數列表來定義具有相同名稱但不同參數的多個函數。重載函數可以具有相同的名稱,但是參數類型、參數個數或參數順序必須不同。重載函數的選擇是在編譯時進行的,根據調用時提供的參數類型來選擇合適的函數。
下面是一個重載函數的例子:
在上面的例子中,print
函數被重載了兩次,一次接受整數參數,另一次接受浮點數參數。根據傳遞的參數類型,編譯器會選擇合適的重載函數進行調用。
重寫(Overriding)
重寫(Overriding)是指在派生類中重新定義基類中已有的虛函數。派生類可以通過重寫基類的虛函數來提供自己的實現,從而覆蓋基類中的實現。重寫函數必須具有與基類函數相同的函數簽名(包括函數名、參數列表和返回類型)。
下面是一個重寫函數的例子:
在上面的例子中,Shape
類中的 draw
函數被聲明為虛函數,并在派生類 Circle
中進行了重寫。在 main
函數中,創建了一個指向 Circle
對象的 Shape
指針,并調用了 draw
函數。由于 draw
函數是虛函數,并且指針類型是 Shape*
,所以會調用派生類 Circle
中的重寫函數。
總結:
- 重載是指在同一個作用域內,通過改變函數的參數列表來定義具有相同名稱但不同參數的多個函數。重載函數的選擇是在編譯時進行的,根據調用時提供的參數類型來選擇合適的函數。
- 重寫是指在派生類中重新定義基類中已有的虛函數。派生類通過重寫虛函數來提供自己的實現,從而覆蓋基類中的實現。重寫函數必須具有與基類函數相同的函數簽名。重寫的選擇是在運行時進行的,根據對象的實際類型來選擇合適的函數。