學習WTL時,發現其窗口實現模式采用ATL窗口實現方式,于是對ATL窗口實現機制研究一下。
其主要思想還是繼承和模板,避免需函數導致運行時類結構增大。利用控制臺程序模擬如下:
#include <iostream>
template<class T>
class A
{
public:
?A()
?{
?}
?virtual ~A()
?{
?}
?void Say()
?{
??(static_cast<T*>(this))->Say();
?}
};
class DeriveA : public A<DeriveA>
{
public:
?DeriveA() : A<DeriveA>()
?{
?}
?void Say()
?{
??std::cout << "Hello, World!" << std::endl;
?}
};
int main(int argc, char* argv[])
{
?A<DeriveA>*??pA = new DeriveA();
?pA->Say();
delete pA;
?return 0;
}
主要通過基類的this指針識別對象。
posted on 2005-12-20 16:32
萬連文 閱讀(1446)
評論(5) 編輯 收藏 引用 所屬分類:
ATL