帮忙看一道c++题,急
#include<iostream>
using namespace std;
class A
{
public:
A(int n):val(n){}
protected:
int val;
};
class B:public A
{
public:
B(int n):A(n)
{
pB=(n>0? new B(n-1):0);
}
~B(){delete pB;}
void Display()
{
cout << val << endl;
if(pB!=0)pB->Display();
}
private:
B *pB;
};
int main()
{
B b(4);
b.Display();
return 0;
}
程序的运行结果是:4
3
2
1
0
但我不理解为什么结果会是这样,我的想法是:在B的构造函数里,会自身递归调用,最终pB=0,这样在Display()函数里输出一个0
请帮我分析程序的执行过程,先谢谢各位!!!