C 學習記錄 重寫 過載 重構三者區別

2021-10-17 23:52:28 字數 1441 閱讀 2161

重構是對程式內部的架構的調整。

重構強調的是在不改變"軟體外部可觀察的行為"前提下,對內部結構進行調整,使得從程式的外部功能上看,沒有任何變化。

如下例子:

重構前**如下:

#include

class

child

;void

func()

};intmain

(int argc,

char

const

*ar**)

程式執行後,輸出123.

重構後的**如下:

#include

class

child

;voidf1(

)voidf2(

)voidf3(

)void

func()

};intmain

(int argc,

char

const

*ar**)

main函式執行的時候,依然是呼叫a的func方法,程式的輸出也是123,對於外部來說沒有任何改變,但是func內部的實現方式已經改變。

重寫(override)也叫覆蓋。

明確乙個概念:「函式簽名」,函式簽名不僅僅包括函式名,還包括函式的引數、引數的個數、引數的順序、所在命名空間等資訊。但是函式簽名不包括函式的返回值型別,如果兩個函式除了返回值型別不同以外,其他都一模一樣,這在c++中是不被允許的。

重寫是指不改變函式簽名,改變的是乙個函式內部。如下**:

#include

class

parent

;virtual

void

func()

};class

child

: parent};

intmain

(int argc,

char

const

*ar**)

child繼承parent類,重寫了類內的func方法,沒有改變函式簽名,只改變函式內部**。

過載是指不改變函式名,但改變函式的引數、引數個數、引數順序。過載改變了函式的簽名。

**如下:

#include

class

parent

;virtual

void

func()

};class

child

: parent};

intmain

(int argc,

char

const

*ar**)

child繼承parent類,過載了類內的func方法,改變了函式簽名(增加了乙個引數),方法內部**可以改變也可以不改變,但是不改變。

過載 重寫和隱藏三者的區別

c 知識總結目錄索引 過載 同一作用域內被宣告的幾個具有不同引數列表 引數的型別,個數,順序不同 的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。class a 重寫 覆蓋 是指派生類中存在重新定義的函式。其函式名,引數列表,都必須同基類中被重寫的函式一致,返回值型別除了協變情況下...

C 重構 過載 重寫

來,我們問一下自己 建構函式是幹什麼的?重構是什麼?重寫是什麼?過載是什麼?重寫和過載聯絡的是什麼?重構與過載的區別是什麼?重寫和重構又是什麼關係?它們分別怎麼用?重構是重新構什麼?重寫又是在重寫什麼?過載載的又是什麼?哈哈,撒了吧 建構函式 是一種特殊的方法。主要是用來在建立物件的時初始化物件,即...

C 過載重寫重構

前幾篇部落格說了重寫和過載。今天主要說重構,順便比較一下三者。重構就是通過調整程式 改善軟體的質量 效能,使其程式的設計模式和架構更趨合理。提高軟體的擴充套件性和維護性。通俗點說,重構。就是改善既有 的設計,讓 更加的符合物件導向規則。而重寫是出如今多型裡的。virtualkeyword宣告虛方法,...