0
#include <iostream>
using namespace std;

class B
{
    B();

public:
    virtual void print()=0;
};

void B::print()
{
    cout << "B::print"; 
}

int main()
{ 
   B *bp;
   bp->B::print();  /* Type-A   works fine */
   bp->print();     /* Type-B   segmentation fault */

   return 0;
}

上記のコードでは、「bp」を介して純粋仮想関数を呼び出そうとしています。現在、main 関数には 2 種類の呼び出し (Type-A、Type-B) があります。私の質問は、なぜ A が機能するのに B が機能しないのかということです。さらに、コンパイラがオブジェクトを作成せずに非静的関数を呼び出すことができる理由。

4

3 に答える 3