2
#include <iostream>
using namespace std;
class A
{
public :
void show()
{
cout << "A " << endl;
}
};
class B : public A
{
public :
void show()
{
cout << "B " << endl;
}
};
int main()
{
A *a =NULL;
a->show(); // Prints 'A'
B *b =NULL;
b->show(); // Prints 'B'
}
這是如何得到印刷當我們從A
到B
繼承show
,如何show()
可以使用B
類對象叫什麼名字?從B
繼承A
究竟發生了什麼?使用NULL類指針,可以調用類成員函數。這怎麼可能?
解除引用空指針是未定義的行爲。你使用哪種編譯器允許這樣的行爲? – CoryKramer 2014-09-26 12:08:30
我剛剛用g ++ 4.8.1試過他的代碼,它也打印A和B. – 2014-09-26 12:10:41
那麼,它仍然是UB。編譯器等可以做任何他們想要的。一旦有虛擬的東西,它肯定會崩潰。 – deviantfan 2014-09-26 12:11:22