如增加list1的时候,在list中保留它的对象指针或对象变量
同时,你还可以通过TAB对像对访问他的tab项.从而得到对象变量或指针.
二楼同学的回答基本已经正确了,我再试试看能不能说得更清楚一些:首先,list毫无疑问是用链表实现的,而queue可以看作是一种功能受限的链表,只能在队尾插入,在队头取出,先进先出。stl中的大多数容器,包括list和queue,保存内容的原理就是拷贝,当你做push操作时,即拷贝一份你所push的元素放进容器中。例如你的程序中,"child.push(datatemp)",即拷贝了一个datatemp对象存放进queue中。“children1.push(&datatemp)”即拷贝了一份datatemp对象的地址存放进queue中。回答你的第一个问题,指针要不要new。看你怎么用了。queue并不知道你的指针是不是一个有效的指针,只做了一个拷贝。如果你push一个空指针,queue中就保存一个空指针,push一个有效的指针(即new过的指针),queue中就保存了一个有效的指针拷贝,也可以push一个无效的指针(没有new过),你稍后在对queue中的指针作new也可以。但是原则是指针被使用时只能是NULL或者有效指针,无效指针完全不该被访问。第二问题,为什么都为3。因为children1中保存的全是变量datatemp的地址。换言之,打印出来的值应该只是datatemp的值,datatemp的值是1,打印出来就是4个1,datatemp是3,打印出来就是4个3。就是这样。
你好!!!!不是很明白你的意思,指针对象怎么可以在缓冲区???
既然是指针,我们就得应该人工的为其在堆里开辟开辟空间,注意我们的堆里开辟的空间必须由人工进行释放,不然的话就可能造成内存泄漏。
比如:A是类名,我们来定义对象的指针数组
A *Pp=new A[N]创建N个对象数组;
用完后要释放空间
delete []p
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)