版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaojiewang1990/article/details/56844716
虚函数的作用,事实上就是实现了多态性,就是实现以共同的方法,但因个体差异而采用不同的策略。下面有代码实例来描述:
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()这个接口,这里是直接操作对象,输出的结果分别是This is A和This is B。当操作指向类的指针时,就面临多态性的选择问题,如下例,最后的执行结果是一样的,都是This is A。
int main(){ //main2
A a;
B b;
A* p1=&a;
A* p2=&b;
p1->print();
p2->print();
}
如下当在基类中使用虚函数描述符时,再去操作指向类的指针时,结果就是分别是This is A和This is B了。
class A{
public:
virtual void print(){ cout<<”This is A”<<endl;}
};
class B:public A{
public:
void print(){ cout<<”This is B”<<endl;} //这里需要在前面加上关键字virtual吗?
};