C++中重写与覆写(虚函数virtual)的区别
生活随笔
收集整理的這篇文章主要介紹了
C++中重写与覆写(虚函数virtual)的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????????????
本文章已收錄于:
?????????????????????????????????????????????????????
虛函數的情況下調用成員函數時調用的是指向對象的所屬類的成員函數例子中為apple
class fruit
{
public:
void func()
{
printf("fruit\n");
}
virtual void vfunc()
{
printf("v fruit\n");
}
};
class apple:public fruit
{
public:
void func()
{
printf("apple\n");
}
void vfunc()
{
printf("v apple\n");
}
};
int main(int argc, char* argv[])
{
fruit* f = new apple(); //注意 f是父類指針
f->func();
f->vfunc();
return 0;
}
結果是:
fruit
v apple
例子中func采用了函數覆蓋
vfunc采用了虛函數(函數重寫)
當fruit類的指針指向一個apple類的對象時,func調用了父類的函數,vfunc調用了子類的函數。
如過是函數覆蓋,調用成員函數時,直接調用對象指針所屬類的成員函數,例子中為fruit
{
public:
void func()
{
printf("fruit\n");
}
virtual void vfunc()
{
printf("v fruit\n");
}
};
class apple:public fruit
{
public:
void func()
{
printf("apple\n");
}
void vfunc()
{
printf("v apple\n");
}
};
int main(int argc, char* argv[])
{
fruit* f = new apple(); //注意 f是父類指針
f->func();
f->vfunc();
return 0;
}
結果是:
fruit
v apple
例子中func采用了函數覆蓋
vfunc采用了虛函數(函數重寫)
當fruit類的指針指向一個apple類的對象時,func調用了父類的函數,vfunc調用了子類的函數。
如過是函數覆蓋,調用成員函數時,直接調用對象指針所屬類的成員函數,例子中為fruit
虛函數的情況下,調用成員函數時,調用的是指向對象的所屬類的成員函數,例子中為apple
總結
以上是生活随笔為你收集整理的C++中重写与覆写(虚函数virtual)的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV 2.4.0 正式版发布,开
- 下一篇: C++(1) 指针 new 和delet