现在讨论以下tear off技术
tear off只要用于当接口很多,容易造成接口 "膨胀 "的情况.
比如:
class CBeachBall :
public CComObjectRootEx <CBeachBall> ,
public ISphere,
public IRollableObject,
public IPlaything,
public ILethalObject, <====不经常用
public ITakeUpSpace,
public IWishIWereMoreUseful,
public ITryToBeHelpful,
public IAmDepressed {...};
CBeachBall一共实现了8个接口,这样每个组件实例都要由8个vptr,需要额外32个字节的开销.
而这8个接口并不是每个都很常用.
tear off只要用于当接口很多,容易造成接口 "膨胀 "的情况.
比如:
class CBeachBall :
public CComObjectRootEx <CBeachBall> ,
public ISphere,
public IRollableObject,
public IPlaything,
public ILethalObject, <====不经常用
public ITakeUpSpace,
public IWishIWereMoreUseful,
public ITryToBeHelpful,
public IAmDepressed {...};
CBeachBall一共实现了8个接口,这样每个组件实例都要由8个vptr,需要额外32个字节的开销.
而这8个接口并不是每个都很常用.