最後,總結一下關於虛函式的一些常見問題:
1) 虛函式是動態繫結的,也就是說,使用虛函式的指標和引用能夠正確找到實際類的對應函式,而不是執行定義類的函式。這是虛函式的基本功能,就不再解釋了。
2) 建構函式不能是虛函式。而且,在建構函式中呼叫虛函式,實際執行的是父類的對應函式,因為自己還沒有構造好, 多型是被disable的。
3) 析構函式可以是虛函式,而且,在乙個複雜類結構中,這往往是必須的。
4) 將乙個函式定義為純虛函式,實際上是將這個類定義為抽象類,不能例項化物件。
5) 純虛函式通常沒有定義體,但也完全可以擁有。
6) 析構函式可以是純虛的,但純虛析構函式必須有定義體,因為析構函式的呼叫是在子類中隱含的。
7) 非純的虛函式必須有定義體,不然是乙個錯誤。
8) 派生類的override虛函式定義必須和父類完全一致。除了乙個特例,如果父類中返回值是乙個指標或引用,子類override時可以返回這個指標(或引用)的派生。例如,在上面的例子中,在base中定義了 virtual base* clone(); 在derived中可以定義為 virtual derived* clone()。可以看到,這種放鬆對於clone模式是非常有用的。
參考:
關於c 的虛函式的一些總結
對於什麼時候子類會覆蓋父類中的函式 1 如果子類的東西和父類是一樣的,那麼肯定是子類覆蓋父類中的函式 2 如果子類的函式和父類的函式一模一樣,就是前面少了個virtual那麼,子類還是覆蓋父類的函式 3 如果子類和父類的函式返回值不一樣,那麼子類是不覆蓋父類的函式 4 最糾結的應該算是對於引數含有預...
關於頁面布局的一些注意點
1 在div布局不好解決的地方不用猶豫,使用table!2 div使用百分比大小時如果其又受其他元素的固定高寬影響的話overflow無效,加入position absolute即可解決 3 當有dtd頭存在時height的百分比單位不起作用 4 當td內沒有文字內容時td不顯示,即使裡面有div等...
c 使用中的一些注意點
1.在c 中,建構函式在預設引數,一般是要放在最後面的。2.如果想通過傳乙個指標得到函式的返回值,則應該用指標的指標 3.c 中,主線程退出了,子執行緒也就退出了。一般是,主線程要迴圈。c 一些開發原則 1.如果函式要傳引用 的話,一般是這樣 const std string msg 要加const...