C++中的虚函数的作用主要是实现了多态的机制
当父类的指针指向子类的时候,如果函数不是虚函数
指针是什么类型,就调用什么类型的方法。(去掉virtual)
当函数是虚函数时,指针指向谁,就调用谁的函数(没有去掉virtual)
这就是多态的体现。多态是父类指针指向子类,虚函数一般出现在子类。
c++ (继承 多态 封装)
//虚函数,重写go(),不会继承父类的go()函数。
#include <iostream>
using namespace std;//运算符的重载
class A
{
public:
virtual void go()
{
cout<<"父类的go()"<<endl;
}
};
class B : public A
{
public:
int a;
void go()//相当于写了virtual,因为用父类的指针指向子类的时候,显式的是父类
{
cout<<"子类的go()"<<endl;
}
};
void main()
{
A* p = new A;
p->go();
B *p1 = new B;
p1->go();
/*
当父类的指针指向子类的时候,如果函数不是虚函数
指针是什么类型,就调用什么类型的方法。(去掉virtual)
当函数是虚函数时,指针指向谁,就调用谁的函数(没有去掉virtual)
这就是多态的体现。多态是父类指针指向子类,虚函数一般出现在子类。
c++ (继承 多态 封装)
*/
A *p2 = new B;//可以把派生类转化为基类
p2->go();//但是调用的是子类的go()
// B* P3 = new A;//不可以把基类转化为派生类
// p3->go();
A* p4 = new B;
p4->go();
}