For example:
1 class ATL_NO_VTABLE CMath : 2 public CComObjectRootEx<CComSingleThreadModel> 3 public CComClass<CMath, &CLSID_Math> 4 public IMath, 5 public IAdvancedMath 6 { 7 .... 8 }; 从CComObjectRootEx得到IUnknown支持,从CComCoClass得到类工厂支持,从IMath等获得方法特征 ATL_NO_VTABLE是为了压缩代码长度的一个尝试(推迟生成Vtable),实现类仍然是一个抽象类,实例化时才生成Vtable ATL框架完全是为了性能着想,性能是压倒一切的因素 类工厂是为了支持外部创建
ATL组件实现
时间: 2024-08-10 23:30:50