- 1
- 0
- 约3.34千字
- 约 6页
- 2026-10-11 发布于河北
- 举报
C++虚函数高频面试题及详细答案(实战版)
一、基础概念题(入门必问)
1.什么是虚函数?虚函数的作用是什么?
答案:
在C++中,被virtual关键字修饰的类成员函数就是虚函数。
核心作用是实现多态(动态多态)。简单来说,就是用父类指针/引用指向子类对象时,调用的是子类重写的函数,而非父类的函数。
普通成员函数是静态绑定(编译期确定调用哪个函数),虚函数是动态绑定(运行期根据对象真实类型确定调用函数)。
2.虚函数和普通成员函数的核心区别?
答案:
绑定时机不同:普通函数编译期静态绑定;虚函数运行期动态绑定。
调用规则不同:父类指针调用普通函数,永远执行父类方法;父类指针调用虚函数,执行子类重写的方法。
内存开销不同:包含虚函数的类会生成虚函数表,对象会附带虚表指针,有少量内存开销;普通函数无额外开销。
继承重写规则不同:普通函数子类同名函数会隐藏父类函数;虚函数子类同名同参函数会重写父类函数。
3.什么是函数重写(覆盖)?重写的必要条件是什么?
答案:
重写是子类对父类虚函数的重新实现,是实现多态的前提。
重写必备4个条件:
存在父子继承关系
父类函数必须是虚函数(带virtual)
子类函数与父类函数函数名、参数列表、返回值完全一致(协变返回除外)
访问权限不影响重写(private虚函数也可重写,只是外部无法调用)
4.什么是函数隐藏?和重写的区别?
答案:
只
原创力文档

文档评论(0)