學習WTL時,發(fā)現(xiàn)其窗口實現(xiàn)模式采用ATL窗口實現(xiàn)方式,于是對ATL窗口實現(xiàn)機制研究一下。
其主要思想還是繼承和模板,避免需函數(shù)導致運行時類結(jié)構(gòu)增大。利用控制臺程序模擬如下:
#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
萬連文 閱讀(1448)
評論(5) 編輯 收藏 引用 所屬分類:
ATL