c++中虚函数的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 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吗?

};

猜你喜欢

转载自blog.csdn.net/xiaojiewang1990/article/details/56844716