继承关系中的函数调用


#include<stdio.h>
struct A
{
    void aa()
    {
        printf("aa");
    }
    virtual void bb()
    {
        printf("bb");
    };
    A()
    {
        bb();
    }
};

struct B:A
{
    void aax()
    {
        printf("b_aa");
    }
    void bb()
    {
        printf("b_bb");
    }
};

int main()
{
    A *p=new B;//声明一个A类型对象,首先调用构造函数
    //p是指针类型,必须开一个空间
    p->aa();//调用A中的aa
    printf("\n");
    p->bb();//优先调用重载后B中的bb,如果B中没重载bb就调用A中的bb
    //B *p1=new A;是不行的,是能B继承A

    printf("\n");
    B p1;
    printf(" ");
    p1.aax();
    printf(" ");
    p1.aa();//B继承了A的构造函数,所以先执行的A的构造函数
    return 0;
}

猜你喜欢

转载自blog.csdn.net/dt_zhangshuo/article/details/79121128
今日推荐