理解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;
}

相关文章:

  • 2022-12-23
  • 2021-07-09
  • 2022-12-23
  • 2022-12-23
  • 2021-04-02
  • 2021-08-07
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-16
  • 2023-02-05
  • 2022-12-23
  • 2021-02-01
  • 2022-12-23
  • 2021-09-05
相关资源
相似解决方案