可能重复:
通过 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?
}
最后两种情况属于多态类。第一种情况是普通类。我知道,如果我在 A 的 f1 中访问 i ,它将再次给出运行时异常。但我不明白为什么会这样