快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

C++虚函数探索笔记(2)

    C++虚函数探索笔记(2)——虚函数与多继承

    关注问题:

    虚函数的作用

    虚函数的实现原理

    虚函数表在对象布局里的位置

    虚函数的类的sizeof

   

    多继承时的虚函数表定位,以及对象布局

    虚析构函数的作用

    虚函数在QT的信号与槽中的应用

    虚函数与inline修饰符,static修饰符

    前面我们尝试了一个简单的例子,接下来尝试一个多级继承的例子,以及一个多继承的例子。主要涉及到以下问题:多级继承时虚函数表的内容是如何填写的,如何在多级继承的情况下调用某一级父类里的虚函数,以及在多继承(多个父类)的情况下的对象布局。

    多级继承

    在这里,多级继承指的是有3层或者多层继承关系的情形。让我们看看下面的代码:

 //Source filename: Win32Con.cpp

 #include <iostream>
 using namespace std;
class parent1
 {
public:
    virtual int fun1(){cout<<"parent1::fun1()"<<endl;return 0;};
    virtual int fun2()=0;
};
class child1:public parent1
 {
public:

    virtual int fun1()
    {
        cout<<"child1::fun1()"<<endl;
        parent1::fun1();
        return 0;
    }
    virtual int fun2()
    {
        cout<<"child1::fun2()"<<endl;
        return 0;
    }
};

class grandson:public child1
 {
public:
    virtual int fun2()
    {
        cout<<"grandson::fun2()"<<endl;
        //parent1::fun2();
        parent1::fun1();
        child1::fun2();
        return 0;
    }
};

void test_func1(parent1 *pp)
{
    pp->fun1();
    pp->fun2();
}

int main(int argc, char* argv[])
{
    grandson sunzi;
    test_func1(&sunzi);
    return 0;

    这段代码展示了三个class

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论