c++中的虚函数和纯虚函数

//虚函数是为了让基类能动态调用子类的这个函数
//纯虚函数是为了让子类必须实现基类声明的纯虚函数,起到规范作用
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
 virtual void foo()//基类中的虚函数
         {
         cout << "A::foo() is called" << endl;
         }

};
class AA
{
public:

    virtual void funtion1() = 0;//基类中的纯虚函数必须,只声明即可
};
class B :public A
{
public:
     void foo()
         {
         cout << "B::foo() is called" << endl;
         }

};
class BB :public AA
{
public:
    void funtion1()//子类中必须实现基类的纯虚函数
    {
        cout << "子类B实现基类A的纯虚函数funtion1"<<endl;
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
     A *a = new B();
     a->foo();  // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
     A *a2 = new A();
     a2->foo();//A的foo

     BB *bb = new BB();
     bb->funtion1();//含有纯虚函数的基类AA是不能实例化的,BB继承了含有纯虚函数的基类AA后必须实现其中的纯虚函数funtion1
     system("pause");

     return 0;

}

你可能感兴趣的:(C++)