您的位置:首页 > 其它

理解ATL中的ATLNOTABLE和模板实现不带虚函数表之多态

2009-02-24 15:09 246 查看
理解ATL中的ATLNOTABLE和模板实现不带虚函数表之多态

Wentao Sun

#include <iostream>

using namespace std;

template <typename T>

class B1

{

public:

    void sayHi()

    {

        T* pT = static_cast<T*>(this);

        pT->printClassName();

    }

    void printClassName()

    {

        cout << "This is B1 " << endl;

    }

};

class D1 : public B1<D1>

{

public:

    void printClassName()

    {

        cout << "This is D1" << endl;

    }

};

class D2 : public B1<D2>

{

public:

    void printClassName()

    {

        cout << "This is D2" << endl;

    }

};

int _tmain(int argc, _TCHAR* argv[])

{

    D1 d1;

    D2 d2;

    d1.sayHi();

    d2.sayHi();

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: