理解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;
}
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;
}
相关文章推荐
- ATL-Style模板 不用虚函数实现 多态
- 模板代替虚函数实现多态-- 发布日期:2008-04-24 13:05
- C++模板--ATL利用其实现多态
- 编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异
- 第十二周项目一——理解函数模板
- C++入门学习:类模板的使用(函数在类的内外实现的不同)
- 理解 select 函数并实现服务器端
- C语言实现函数多态
- 第十二周项目一(5)理解函数模板
- C/C++—— 在构造函数中调用虚函数能实现多态吗(Vptr指针初始化的过程分析)
- 利用C++模板,代替虚函数,实现类的静态多态性(加入性能测试部分)
- C++多态的实现机制深入理解
- 父类的虚函数声明为private,是否可以实现多态
- 2017年12月12日 qsort函数理解、多态的实验
- C++中的多态与虚函数的内部实现方法
- C++多态及虚函数的理解和使用
- [李景山php] 深入理解PHP内核[读书笔记]--第四章:函数的实现 --简介
- 多态的实现方式,继承与模版函数
- 多态理解,方法重写分析,类继承与接口实现中,方法重写的实现机制的区别
- 集合的模拟实现(函数模板)