注:下面是我自己最近看書的總結,應該有錯誤
在c++中,如果子類與父類的函式名相同,那麼子類將覆蓋父類中同名的函式,也就是說,在繼承關係中,方法簽名只由方法名決定。若想實現多型效果,那麼只能使用虛函式來實現。父類中的虛函式可能被編譯為乙個指標,編譯子類時將子類相應的函式位址賦值給那個指標。
我想,繼承在向上和向下兩個方向起作用:
向上:子類可以使用父類中public和protected的方法和變數,實現**重用。
向下:父類中的虛函式由不同的子類實現,實現多型。
在這個模型中,容易出問題的地方應該在「覆蓋」上。子類物件賦值給父類變數後,執行的是父類中的函式,而不是自身的函式。這樣一是容易使人陷入困惑,二是增大了物件的體積。所以我認為在設計時要盡量避免這種情況。如果是特意追求這種效果,一定要在注釋中對此進行說明。
例如下面的**:
#include using namespace std;
class base
public void g(double x)
}class derived extends base
public void g(double x, double y)
}class basederived
}
執行結果:
base.f(double):3.14
base.f(double):3.14
說明儘管子類中定義了同名的f(int)和g(double, double),但父類中的f(double)和g(double)仍能使用。
C 中多型要注意的事情 與Java的對比
注 下面是我自己最近看書的總結,應該有錯誤 在c 中,如果子類與父類的函式名相同,那麼子類將覆蓋父類中同名的函式,也就是說,在繼承關係中,方法簽名只由方法名決定。若想實現多型效果,那麼只能使用虛函式來實現。父類中的虛函式可能被編譯為乙個指標,編譯子類時將子類相應的函式位址賦值給那個指標。我想,繼承在...
iOS中需要注意的事情
開個帖子來記錄下遇到的一些ios開發中需要注意的東西。2.uiview的frame問題 有時候用到一些view的尺寸 比如求view的高度 提示功能可能會可以直接給出view.height,模擬器上是好用的,但是真機不行。所以要寫全view.frame.size.height或者view.bound...
敏捷開發中需要注意的事情
1.團隊中各個隊員的直接面對面相互溝通勝過任何的工具溝通 2.可以工作的軟體勝過詳細的文件,才是最好的文件 3.良好的客戶關係比死板的合同更具有意義 4.及時的響應變化勝過時刻遵循計畫 5.盡早的持續的交付有價值的軟體使客戶滿意 6.任何時候都積極的擁抱需求的變化,哪怕是開發後期也是如此 7.在整個...