相关疑难解决方法(0)

为什么这段代码会在提到的地方崩溃?

你能详细说明为什么这个代码在提到的地方崩溃了吗?我有点难过.我想这与它有关,sizeof(int)但我不太确定.谁能解释一下?

class Base
{
public:
    virtual void SomeFunction() 
    {
        printf("test base\n");
    }

    int m_j;
};

class Derived : public Base {
public:
   void SomeFunction() 
   {
       printf("test derive\n");
   }

private:
   int m_i;
};

void MyWonderfulCode(Base baseArray[])
{
   baseArray[0].SomeFunction();  //Works fine
   baseArray[1].SomeFunction();  //Crashes because of invalid vfptr
   baseArray[2].SomeFunction();  //Crashes because of invalid vfptr
   baseArray[3].SomeFunction();  //Works fine
   baseArray[4].SomeFunction();  //Crashes because of invalid vfptr
   baseArray[5].SomeFunction();  //Crashes because of invalid vfptr
   baseArray[6].SomeFunction();  //Works fine
   baseArray[7].SomeFunction();  //Crashes because of invalid vfptr
   baseArray[8].SomeFunction();  //Crashes because …
Run Code Online (Sandbox Code Playgroud)

c++ arrays virtual

5
推荐指数
4
解决办法
1202
查看次数

标签 统计

arrays ×1

c++ ×1

virtual ×1