什么是虚函数?
能否给个VC6中的虚函数的样子看看?

解决方案 »

  1.   

    //父类
    class CParent
    {
    protect:
         virtual void TestVirtual();//这是个虚函数。
    };
    void CParent::TestVirtual()//这个函数可有可没有,视需要而定。
    {
    }
    //子类
    class CChild
    {
    protect:
         virtual void TestVirtual();//表示在此子类中重载这个虚函数。
    };
    void CChild::TestVirtual()//这是重载函数的定义。
    {
         CParent::TestVirtual();//调用父类的该函数,你也可以不调用它。
       //若调用,则要求父类中已重载该函数,否则编译出错。
    }
      

  2.   

    http://www.csdn.net/Develop/article/13%5C13725.shtm
    对C++中虚函数、纯虚函数在多态中作用的一点认识
      

  3.   


         virtual void TestVirtual();//表示在此子类中重载这个虚函数。
    };
    前面的virtual不要吧!!
      

  4.   

    虚函数的一个简单的例子。
    class A
    {
    protect:
      virtual void test();
    };
    void A::test()
    {
       printf("this is class A");
    }
    class B::A
    {
    protect:
      virtual void test();
    };
    void B::test()
    {
       printf("this is class B");
    }
    void main()
    {
       A a;
       B b;
       b.test();
    }
    output:
    this is class B
      

  5.   

    比如说有个开关的类,
    里面有动作"按"
    属性开和关.有两个继承于它的子类"电灯开关"和"日光灯开关"class CSwitch
    {
    public:
       virtual void push()=0;//如果你需要让此函数执行功能, 去掉=0.并实现代码.
    }class CSubSwitch1
    {
    public:
       virtual void push()//virtual 可有可无, 如此类还要做为父类就最好用virtual
      {
         打开电灯;
      }
    }class CSubSwitch2
    {
    public:
       virtual void push()//virtual 可有可无.
      {
         打开日光灯;
      }
    }void main()
    {
      CSwitch *sw1=new CSubSwitch1;
      CSwitch *sw2=new CSubSwitch2:
      sw1->push();//执行打开电灯的动作;
      sw2->push();//执行打开日光灯的动作;
    //sw1,sw2都是CSwitch类的指针, 而执行的动作取决于实现的类.}
      

  6.   

    只有需要多态时才用虚函数:如
    一个画图程序:
    CMyObject:(基类)定义一个虚函数virtual void Draw();
    CLine:(由CMyObject派生)重载void Draw();
    CCircle:(由CMyObject派生) 重载void Draw();这样,你可以用CMyObject类型的变量直接指向派生类的Draw();如CMyObject* pObj;
      pObj = .....(赋值,让它指向一个已存在的图形实例)此时pObj->Draw()会根据pObj的实际类型调用合适的Draw函数,画直线,或画圆。。
      

  7.   

    补充:xubobbs(波波酷) 1.一旦某个函数被声明为虚函数,派生类中不管有没有virtual,它都是虚函数.
    2.父类中声明了纯虚函数(即,形如 virtual FunctionTYPE MyFunc() = 0; )的,派生类中
    必须重载.