MFC中关于虚函数的一些问题
這個(gè)是C++中虛函數(shù)以及多態(tài)性。 我們知道,如果派生類中重定義了基類中的虛函數(shù),即使用基類的類型指針調(diào)用該函數(shù),那么實(shí)際上連編的是派生類的函數(shù)。比如, class A { virtual void out() { printf("A");} } class B : public A { virtual void out() { printf("B");} } void main() { A* a = new B; a->out(); <== 調(diào)用的是B的out,而不是a的out,輸出的實(shí)際上是 B。 delete a; } 這種派生類可以改變基類指針特性的行為,就被稱為多態(tài)性。 然而,當(dāng)派生類具有了新的特征,有些時(shí)候,我們?nèi)匀幌MA艋惖奶卣?#xff0c;也就是說,我們希望能夠調(diào)用基類定義的out函數(shù),所以就出現(xiàn)了A::out()這樣的語法,以便允許從派生類中直接調(diào)用基類實(shí)現(xiàn)的out虛函數(shù)。比如 class B : public A { virtual void out() { printf("B"); <== 輸出B A::out(); <== 輸出A,不是靜態(tài)函數(shù)調(diào)用,而是基類虛函數(shù)調(diào)用。 } } void main() { A* a = new B; a->out(); <== 調(diào)用的是B的out,輸出的實(shí)際上是 BA a->A::out(); <== 還可以這樣調(diào)用,現(xiàn)在a類型指針可以直接調(diào)用自身實(shí)現(xiàn)的out,輸出的是 A delete a; }
總結(jié)
以上是生活随笔為你收集整理的MFC中关于虚函数的一些问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcpmp 编译 源代码分析
- 下一篇: 0阶指数哥伦布编码