1. C++中关于容器存放对象的问题
Line类,Rect类,Ellipse类继承Graph,当用这些类创建对象的时候就调用父类的构造函数分配继承成员的空间,然后再调用自己的构造函数分配派生的新数据成员的空间,如此而已
2. jsf中的javabean被容器实例化后,是保存在request或者session里吗
可以这样理解
<managed-bean-scope>session</managed-bean-scope>
OR
<managed-bean-scope>request</managed-bean-scope>
如果managed-bean-scope被设置成session,在整个session范围内可以使用同一个Bean的实例;如果managed-bean-scope被设置成request,那么每个request(form action)每次会创建一个Bean的实例。一般情况下,我们都会设置成session。
3. spring的事务对象是存储在哪里的
Spring的事物相关对象是在ThreadLocal中保存,并在事物结束时清空的。
4. stl中容器是如何存储指针变量与对象的,假如数据类型较复杂时,存储指针变量是否能节省内存空间呢
二楼同学的回答基本已经正确了,我再试试看能不能说得更清楚一些:
首先,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。就是这样。
5. spring注解,容器实例化在哪
@Controller
• 例如
@Controller
public class SoftCreateController extends SimpleBaseController {}
• 或者
@Controller("softCreateController")
• 说明
@Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写
@Service
• 例如
@Service
public class SoftCreateServiceImpl implements ISoftCreateService {}
• 或者
@Service("softCreateServiceImpl")
• 说明
@Service 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写
6. 容器会为每个监听器类只创建一个实例在哪儿呢
在一个web应用程序中。
由于在一个web应用程序中只会为每个事件监听器类创建一个实例对象,有可能出现多个线程同时调用一个事件监听对象的情况,所以要注意多线程安全问题。
监听器实际上是一个类,这个类实现了特定的接口,然后将这个类在web.xml文件中进行描述,这样服务器在启动的时候就可以实例化这个类,启动监听器。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。例如统计用户在线人数。
7. 关于C++里容器保存对象的问题
[multi]set容器是按序排列的,在插入时会调用<TYPE>的比较运行,你所定义的Item_base类没有重载<和==等操作,无法对其进行比较,所以在其容器内部进行比较时因找不到比较函数而停在那....
如果还不会重载操作符,那么不要使用会进行内部排序的[multi]set容器,使用list<??>,<vector>等容器学习就行了.
8. c++中vector容器是一个模板类,可以存放任何类型的对象请问存放的到底是对象本身还是对象地址
看你具体存放的类型,如果是普通值类型如(int,double)等,存的就是它的值。
如果是指针类型(int*,void*)等,也一样就是这个指针。
如果是类类型如(std::string)等,就是它个一份拷贝。