1樓:匿名使用者
abstract 抽象方法
virtual 虛方法
過載函式就是override的方法
比如 父類a.m() 子類b.m()
1 abstract的方法,父類可以不實現,讓子類去重寫(重寫=overwrite,不過一般不會提到).父類如果存在abstract方法,那麼必然是抽象類,必然不能直接例項化(比如 a a=new a()是不行的),必須由子類去繼承並且重寫所有抽象方法後再去使用.比如:
a a=new b().
2 虛方法,父類寫了之後,子類可以去override.繼承的時候呼叫b.m()
class a
}class b:a
}3 一般的過載.這個跟繼承沒有多大關係.普通的類自身不用寫什麼關鍵字就能實現.有著同樣的名字,但是呼叫的時候根據引數的不同,編譯器選擇合適的來使用
class a
m(int ia){}
m(string sa){}
}4 過載跟抽象還有虛方法可以出現在一個類裡面
abstract class a //這個父類宣告瞭一個抽象方法,一個虛方法,自己實現了一個過載
class b:a//僅僅是實現了父類沒有實現的m()}}
class c:a //實現了m()並且重寫了被父類定義為虛方法的 m(int ia)
}5 new關鍵字(不過一般不用去在意)
class d:b //如果是c#其實還有一個new關鍵字
//這裡故意隱藏父類的m(string)方法
}6 多做做實驗練習下,這些東西基本上都是去公司應聘的oo必考題.
c++多型性。 基類的虛擬函式和過載函式的區別,是不是一個是在執行時發生,一個是在編譯時發生?
2樓:
是的,函式的過載是在編譯的時候發生,而虛擬函式是在執行的時候確定。其實有時候稱函式的過載為靜態多型性,而虛擬函式為動態多型性
3樓:
基類的虛擬函式和過載函式
1)如果沒有同名函式,沒有定義派生類,虛擬函式就不是過載函式;
2)如果有同名函式就是過載函式
3)如果定義了派生類並且派生類過載了虛擬函式(純虛擬函式必須過載,虛擬函式未必要過載)
則基類的虛擬函式一定是過載函式
過載函式就是有其他函式和本函式同名。
虛擬函式則是, 基類的虛擬函式,很可能被過載,
用基類指標和引用呼叫虛擬函式時,如果該指標或引用實際指向或代表的物件是派生類的物件,並且該派生類過載了該虛擬函式,則呼叫的就是派生類過載了的虛擬函式,而不是基類的虛擬函式。這就是物件導向中的多型在c++中的實現方式了。
虛擬函式就是期待派生類過載的函式。
純虛擬函式就是派生類必須過載的函式!
純虛擬函式是虛擬函式的一種;
這就是虛擬函式和過載函式的關係了。
ps:再強調一下,過載只和函式名有關,引數只能說明可不可以過載;
基類和派生類的析構和建構函式似乎不算過載???,這個好像不明確。
類的不同建構函式也是過載。
1)如果基類沒有定義任何派生類,則沒有同名函式的虛擬函式就不是過載函式;
2)如果基類定義了派生類而且沒有任何派生類過載了某個虛擬函式,則沒有同名函式的基類的虛擬函式就依然不是過載函式;
3)如果有任何同名函式,則不論一個函式是否虛擬函式,該函式都是過載函式;
4)如果派生類和基類定義了任何同名函式,都是函式過載。
5)如果虛擬函式在派生類裡面重新定義了,一定是過載;
6)有純虛擬函式的類,有一個完全實現版本的派生類的話(可以定義物件),則一定是所有純虛擬函式一定都會被過載。
7)基類和派生類的解構函式如果是虛擬函式則一定是過載函式(這是唯一的不同名函式的明確的函式過載)
4樓:匿名使用者
虛擬函式在基類中宣告 用virtual修飾 但是並不實現 ,只是在子類繼承基類時才實現
過載函式是基類中已經有某個函式,當子類繼承時重新實現(基類已實現)覆蓋基類的方法。
虛擬函式和過載在子類和基類中的方法同名,引數型別相同,返回值型別相同。個人感覺 虛擬函式是一種特殊的過載,即必須被過載的函式(一般函式可以不被過載)
c++中過載與重寫函式區別及虛擬函式
5樓:法拉克的
過載,多個方法使用同一個方法名,必須明確的可以識別應該呼叫哪個方法。
重寫函式和虛擬函式很像,重新函式就是重新實現某個函式。
虛擬函式,虛擬函式分為兩種,純虛擬函式和虛擬函式。純虛擬函式在整合時必須進行實現【重寫覆蓋】,而虛擬函式可以不用重寫【如果重寫了,則覆蓋掉原函式】。
C建構函式與符號過載問題,求指點
嚴格的拷貝建構函式是這樣的,const 引用才能接受右值包括常量 const只讀量 臨時量 person const person p c 複製建構函式和 號過載問題 表述基本上沒有問bai題。從功能上來du說,建構函式是用於建立zhi物件的dao,operator其實是可以看成普通內的成員函式,只...
指數與指數函式的區別與聯絡是什麼
指數函式 形如y a x,a 0且a 1的函式如上式,x叫做a的指數。兩者之間的關係 指數函式的自變數是指數。區別 前者是函式名稱,後者是運算基本概念 如因數 指數函式與指數型函式有什麼區別?兩個有區別,指數函式是f x a x a 0且a不等於1 注意 指數函式自變數一定是x,係數一定是1比如f ...
數學裡的函式與c語言的函式有什麼區別
c的函式是對數學函式的一種抽象 比如數學中的y x 1 其輸入為x c中稱為引數 輸出 在c中叫返回值 為y。那麼上述數學函式在c中就表示為 double line double x 通過上例可知,c語言中的函式是隻一個模組。是可以被呼叫的部分。是計算機行業中的概念。數學的函式是一種對映,是一個數學...