1 c++的虚函数主要是实现了多态机制。多态机制简而言之就是用父类型的指针指向其子类的实例,进而通过父类的指针调用子类函数的技术。这种技术可以让父类的指针拥有多种形态,这是一种泛型技术。所谓泛型技术说白了就是试图用不变的代码实现可变的算法。比如c++模板。
#include <iostream>
using namespace std;
class A
{
public:
virtual void f(){cout<<"A::f()"<<endl;}//虚函数
void g(){cout<<"A::g()"<<endl;}//普通函数
};
class B :public A{
public:
virtual void f(){cout<<"B::f()"<<endl;}
void g(){cout<<"B::g()"<<endl;}
};
class C :public A{
public:
virtual void f(){cout<<"C::f()"<<endl;}
void g(){cout<<"C::g()"<<endl;}
};
int main()
{
A *pa=new B();
pa->f();
pa->g();
delete pa;
pa=NULL;
system("pause");
return 0;
}
2 c++纯虚函数
含有纯虚函数的类不能实例化。
#include <iostream>
using namespace std;
class A
{
public:
virtual void f()=0;//定义纯虚函数
};
class B:public A
{
public:
virtual void f()
{
cout<<"B::f()"<<endl;
}
};
int main()
{
//A *paa=new A();实例化失败
A *pa=new B();
pa->f();
delete pa;
system("pause");
return 0;
}