虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章
。没了继承,什么都没得谈。
下面是对C++的虚函数这玩意儿的理解。
什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始)
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性
(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。下面来看一段简
单的代码
class A{
public:
void print(){ cout<<”This is A”<<endl;}
};
class B:public A{
public:
void print(){ cout<<”This is B”<<endl;}
};
int main(){ //为了在以后便于区分,我这段main()代码叫做main1
A a;
B b;
a.print();
b.print();
}
通过class A和class
B的print()这个接口,可以看出这两个class因个体的差异而采用了不同的策略,输出的结果也是我们预料中的,分别是This is
A和This is
B。但这是否真正做到了多态性呢?No,多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。那现在就把main()处的代码改一改。
int main(){ //main2
A a;
B b;
A* p1=&a;
A* p2=&b;
p1->print();
p2->print();
}
运行一下看看结果,哟呵,蓦然回首,结果却是两个This is A。问题来了,p2明明指向的是class B的对象但却是调用的class A的print()函数,这不是我们所期望的结果,那么解决这个问题就需要用到虚函数
class A{
public:
virtual void print(){ cout<<”This is A”<<endl;} //现在成了虚函数了
};
class B:public A{
public:
void print(){ cout<<”This is B”<<endl;} //这里需要在前面加上关键字virtual吗?
};
毫无疑问,class A的成员函数print()已经成了虚函数,那么class
B的print()成了虚函数了吗?回答是Yes,我们只需在把基类的成员函数设为virtual,其派生类的相应的函数也会自动变为虚函数。所
以,class B的print()也成了虚函数。那么对于在派生类的相应函数前是否需要用virtual关键字修饰,那就是你自己的问题了。
现在重新运行main2的代码,这样输出的结果就是This is A和This is B了。
现在来消化一下,我作个简单的总结,指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数
分享到:
相关推荐
C++实验六 多态性和虚函数的应用 课程 实验报告 作业参考的良品!
1、理解多态性的概念。 2、熟练掌握虚函数的作用及其使用方法。 3、掌握静态关联和动态关联的概念和用法。 4、理解纯虚函数和抽象类的概念和用法。 (二)实验内容 1、定义一个类A,在A中有两个私有的整型变量a和b,...
C++继承,虚函数与多态性专题.C++继承,虚函数与多态性专题.
用于学习c++虚函数及其多态性,是c++学习者能够轻松掌握虚函数以及多态。
C++继承,虚函数与多态性专题C++继承,虚函数与多态性专题C++继承,虚函数与多态性专题C++继承,虚函数与多态性专题C++继承,虚函数与多态性专题
多态性和虚函数
c++课件 多态性与虚函数
C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同,...
C++虚函数表的测试代码,用于学习C++虚函数的调用关系。
c++课件第十章虚函数和多态性共19页.pdf.zip
第9章 多态性与虚函数 本章学习要求: 虚函数 多态性 静态与动态联编 9.1 多态性的概念 9.2 虚函数 9.3 静态绑定与动态绑定 9.4 纯虚函数和抽象类
C++语言编写面向对象程序,实现柱体体积和表面积的计算(圆柱和四棱柱为必 做内容,三棱柱为选做内容)。例如底面半径为 2、高为 4 的圆柱,体积为 50.27,表面积为75.40;以长为 3、宽为 2 的长方形为底面,高为 5 ...
c++ 多态性 虚函数
C++程序设计与实践:10-虚函数和多态性.ppt
多态性与虚函数课程设计 多态性与虚函数课程设计 多态性与虚函数课程设计 多态性与虚函数课程设计
C++中的虚函数与多态示例代码与详解…………………………
C++程序设计课件 函数第12章 多态性与虚函数 12.1 多态性的概念 12.2 一个典型的例子 12.3 虚函数 12.4 纯虚函数与抽象类
C++中描述的类的 虚函数 和多态性 是十分重要的 这个ppt就是简单介绍了 虚函数 与类的多态
C++ 多态性 虚函数 各种例子 自己写的 肯定运行成功