小编Sum*_*h V的帖子

使用基础和派生对象的虚函数

我已经阅读了关于vtable的内容,并且已经理解了指向基类和派生类对象的基类指针的概念.有人可以解释当基类和派生类都是对象并且派生类对象被分配给基类对象时如何创建vtable的情况.以下示例中的案例3

#include <iostream>
#include <exception>
using namespace std;


class Base
{
public:
    virtual void function1() { cout<<"Base - func1"<<endl; }
    virtual void function2() { cout<<"Base - func2"<<endl; }
};

class Derived1: public Base
{
public:
    virtual void function1() { cout<<"Derived1 - func1"<<endl; }
};

class Derived2: public Base
{
public:
    virtual void function2() { cout<<"Derived2 - func2"<<endl; }
};

int main () 
{
    // Case 1
    Base* B1 = new Derived1();
    B1->function1();
    B1->function2();

    // Case 2
    cout<<endl;
    Base* B2 = …
Run Code Online (Sandbox Code Playgroud)

c++ virtual object-slicing

5
推荐指数
1
解决办法
139
查看次数

标签 统计

c++ ×1

object-slicing ×1

virtual ×1