虚函数的应用

//

//  main.cpp

//  2013-7-17作业3

//

//  Created by 丁小未 on 13-7-17.

//  Copyright (c) 2013 dingxiaowei. All rights reserved.

//

 

#include <iostream>

usingnamespacestd;

class A

{

public:

    A()

    {

        cout<<"A\n";

    }

    virtual void func()

    {

        cout<<"A::func\n";

    }

    virtual void func1()

    {

        cout<<"A::func1\n";

    }

};

 

class B : publicA

{

public:

    B()

    {

        cout<<"B\n";

        func();

    }

    void func1()

    {

        cout<<"B::func\n";

    }

};

 

 

int  main(void )

{

    A *a = newB();    //先创建B对象,又因为B是继承的A,所以在构造B之前要先构造A,所以输出A,然后构造B,输出B,然后调用func(),输出A::func\n

    a->func();   //由于a中的func()方法虽然定义的是虚函数,但是由于B类中没有该重名函数,所以直接调用A中的func方法,输出A::func

    a->func1();  //由于A中的func1方法是虚函数,且B中也有该方法,所以就调用B中的func1方法,输出B::func\n

    B b;   //实例化一个B对象,先实例化他的基类,调用A的构造方法,打印输出A,然后在调用B的构造方法,打印输出B,在调用A中的func方法,打印输出A::func\n

    b.func(); //调用继承自A中的func方法

}

 

posted @ 2013-07-18 10:02  蓬莱仙羽  阅读(203)  评论(0编辑  收藏  举报