最近在准备二级考试,看到一题来问问~
代码不难理解,主要是拓展点东西问问。#include"iostream.h"
class A
{
public:
A(){cout<<"CLASS A"<<endl;}
~A(){}
};
class B:public A
{
public:
B(){cout<<"CLASS B"<<endl;}
~B(){}
};
void main()
{
A *p;
p=new B;
B *q;
q=new B;
}
执行结果是
CLASS A
CLASS B
CLASS A
CLASS B
这个结果不难想通,关键是想问,
pq两个指针其实指向的都是堆中保存的B类的对象,
在声明A类指针pq的时候其实并没有在堆内存中分配空间,
是不是这题可以这么理解。
在声明A类指针pq的时候没有执行class A 的构造函数。
另外想问下,有没有什么书是专门讲堆栈内存的,老师说是编译原理对么,
顺便求推荐本讲数据结构的书,
已经学过这门课了,无奈睡得太多,勉勉强强及格了,
现在自己想看看,求推荐,
大学生感谢各位大神了~