您的位置:首页 > 编程语言 > C语言/C++

我理解的C++虚函数

2013-03-02 21:42 239 查看
我在面试求职的过程中,总是会遇见有关C++ 虚函数的一些题目。昨天从老徐那里弄了点资料过来,在看的过程中,感觉良好,于是将我的学习过程记录了下来,希望能够增强我的记忆,下次遇到这样的笔试题目的时候能够解答。

首先面对的是什么是虚函数?概念这些是费话,不懂的自己看书去,也可以上网搜。
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。
虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。
下面来看一段简单的代码:





通过



这两个类的的

函数,可以看出这两个类因个体的差异而采用了不同的策略,输出的结果也是我们预料中的,分别是



。但这是否真正做到了多态性呢?没有,多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。现在把代码改一改,如下:





结果却是两个

。问题来了,p2明明指向的是

的对象但却是调用的



函数,这不是我们所期望的结果,那么解决这个问题就需要用到虚函数了。如下:





显然

的成员函数

已经成了虚函数,那么



成了虚函数了吗?回答是Yes,我们只需在把基类的成员函数设为virtual,其派生类的相应的函数也会自动变为虚函数。所以,



也成了虚函数。那么对于在派生类的相应函数前是否需要用virtual关键字修饰,那就是你自己的问题了。

我的总结是,指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的虚函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++虚函数