重複の可能性:
NULLクラスポインタを介してクラスメソッドを呼び出す
私はインタビューでこの質問をされました誰かがそれに答えることができますか?
#include<string>
#include<iostream>
#include <stdio.h>
using namespace std;
class A
{
int k;
public:
void f1()
{
int i;
printf("1");
}
void f2()
{
k = 3;
printf("3");
}
};
class B
{
int i;
public:
virtual void f1()
{
printf("2");
scanf("%d",&i);
}
};
int main()
{
A* a = NULL;
B* b = NULL;
a->f1(); // works why?(non polymorphic)
b->f1(); // fails why?(polymorphic)
a->f2(); //fails why?
}
最後の2つのケースは、ポリモーフィッククラスです。最初のケースは通常のクラスです。Aのf1でiにアクセスすると、実行時例外が再び発生することを理解しています。しかし、なぜそれが起こるのかわかりません