WEB开发网
开发学院软件开发VC ATL布幔之下的秘密(3) 阅读

ATL布幔之下的秘密(3)

 2006-07-22 22:54:58 来源:WEB开发网   
核心提示: #include <iostream>using namespace std;template <typename T>class TestClass {public:void F(T pT) {cout << "T version"
#include <iostream>
using namespace std;
template <typename T>
class TestClass {
public:
 void F(T pT) {
  cout << "T version" << ''\t'';
  cout << pT << endl;
 }
};
template <>
class TestClass<int> {
public:
 void F(int pT) {
  cout << "int version" << ''\t'';
  cout << pT << endl;
 }
};
int main() {
 TestClass<char> obj1;
 TestClass<int> obj2;
 obj1.F(''A'');
 obj2.F(10);
 return 0;
}

程序的输出为:

T version A
int version 10

ATL中就有若干类是类似这样的特化版本,例如在ATLBASE.H中定义的CComQIPtr。

模板也可以在不同的设计模式中使用,例如策略设计模式可以使用模板实现。

程序45.

#include <iostream>
using namespace std;
class Round1 {
public:
 void Play() {
  cout << "Round1::Play" << endl;
 }
};
class Round2 {
public:
 void Play() {
  cout << "Round2::Play" << endl;
 }
};
template <typename T>
class Strategy {
private:
 T objT;
public:
 void Play() {
  objT.Play();
 }
};
int main() {
 Strategy<Round1> obj1;
 Strategy<Round2> obj2;
 obj1.Play();
 obj2.Play();
 return 0;
}

在这里,Round1和Round2为一个游戏中不同的关卡类,并且Strategy类依靠传递的模板参数来决定该做些什么。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:ATL 之下 秘密

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接