最初對虛函數(shù)的理解
#include <stdio.h>
#include <vector>
using namespace std;
class CBase
{
public:
CBase()
{
}
~CBase()
{
}
virtual void fun1()
{
printf("base fun1\n");
}
void fun2()
{
printf("base fun2\n");
}
void fun3()
{
fun1();
fun2();
}
};
class CSon : public CBase
{
public:
CSon()
{
}
~CSon()
{
}
void fun2()
{
printf("son fun2\n");
}
};
int main()
{
CSon son;
son.fun3();
return 0;
}
輸出結(jié)果是base fun1和base fun2
因為son沒有重新定義fun3,就直接獲取到父類的函數(shù)地址運行,這里沒有進(jìn)行動態(tài)綁定的判斷,是直接獲得。當(dāng)子類的函數(shù)沒有被重寫,子類會直接找到父類的函數(shù)地址進(jìn)行運行,virtual和非virtual得區(qū)別在于,聲明的對象virtual可以用父類的指針來聲明,在調(diào)用函數(shù)的時候,系統(tǒng)會動態(tài)綁定真正的函數(shù)地址。
posted on 2010-10-20 10:07 zuhd 閱讀(281) 評論(0) 編輯 收藏 引用 所屬分類: c/c++