class a
int main()
1.只有指標和引用才能誘發虛函式機制。所以
(1)a
(2)b
2.只有虛函式機制,才會出現繼承中,呼叫子類的函式的性質。
(3)b
(4)b
否則,全部都是在編譯期確定下來。具體看下面例子
class a
};class b:public a
};void fun2(a *a)
int main()
1.上述所有表示式都是編譯期就確定會怎樣執行的。
2.只要是a定義的物件(a *a=new b),都以a裡的函式來執行
(1)a
(2)a:如果想要執行b的fun,只能自己強制型別轉換
(3)a:因為在編譯期就已經決定呼叫a裡面的fun了。不會呼叫子類(如果有fun3()),因為不是virtual
3.b定義的物件也是要聽編譯期的
(4)b
(5)a:因為引數是a,想要用b要型別轉換
(6)a
對這個(6)情況要說明一下,編譯期就已經要呼叫a的fun了,不存在子類重寫父類函式這種說法。
如果上面b類中不要注釋 fun() 函式,就會呼叫b的fun(),還是因為編譯期決定。
關於 類的 virtual 例項 說明 (c )
using system using system.collections.generic using system.text public class classboy classfather public class classgirl classfather endregion region ...
C 呼叫C 的類
這裡講c 呼叫c 的類,也是我真正想要的做的。網上關於這方面的知識挺雜,我折騰了好久終於搞定了。大致有兩種方法。第一種c 直接調,用到system.runtime.interopservices中的marshal類,貌似這樣可能通過直接操縱記憶體來實現呼叫,但我沒有嘗試 第二種方法是用managed...
繼承關係類例項物件的非繫結關係方法呼叫
class a object def f self print a f class b a def f self a.f self a a b b a.f b.f a.f a b.f b print a.f b print b.f a 結果 a f a fa f a f a f traceback ...