大家给解释一下好吗?
我有些弄糊涂了

解决方案 »

  1.   

    tear-off是可分离的意思,如果COM组件中的某个组件类实现的一个接口不是经常被用到,那么就专门生成一个类只实现那个接口,而只有在客户QueryInterface时,请求的是那个接口时,再即时动态生成那个类,即实现那个接口,返回给客户。这样可以比较高效率的使用内存。cached指已经缓冲了的。即一个对象,应客户的要求而第一次生成后,然后客户又要求一个接口时,不重新生成一个实例,而是将前面已经生成了的实例的引用记数增加,然后返回其指针。此时客户以为得到的两个指针不同,但实际相同,而那个已经生成的实例就叫做cached。这就相当于设计模式中提到的单件(Singleton),不过并不只用于此,比如对象池技术,线程池技术等。
    在ATL中主要用于类厂的生成(即即使多次请求类厂,但仍只生成一个类厂实例),也可和上面的tear-off连用,进一步提供内存利用率。至于aggregate,楼主可参考
    http://expert.csdn.net/Expert/topic/2305/2305025.xml?temp=.4171106
      

  2.   

    tear-off, cached详见《深入解析atl》第5章,《com本质论》第4章aggregate objects详见《com本质论》第4章。。