C++中函数覆盖和使用虚函数有什么区别
2016-03-09 09:41
218 查看
举个例子
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
虚函数的情况下,调用成员函数时,调用的是指向对象的所属类的成员函数,例子中为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
虚函数的情况下,调用成员函数时,调用的是指向对象的所属类的成员函数,例子中为apple
相关文章推荐
- 如何使用Xcode7软件添加NTL库并运行C++程序。
- C语言struct中冒号用法
- caffe c++
- [转]值得推荐的C/C++框架和库
- C++ cin,getchar,get,getline的区别
- C语言——内存管理
- 怎样计算C++继承、虚继承、虚函数类的大小
- LeetCode 206. Reverse Linked List
- C++继承
- LeetCode 234. Palindrome Linked List
- C语言实现通讯录
- C语言注释与C++注释的相互转换
- C++ 公有继承简析
- c/C++
- C++第一次上机实验
- C++的字面值和字面值类型
- ubuntu配置vim为windows下C++编程风格
- 深入学习C++.2016_3_8
- C++学习之静态成员
- OpenJudge百炼习题解答(C++)--题2690:首字母大写