首页 / 软件开发 / C++ / ATL布幔之下的秘密(3)
ATL布幔之下的秘密(3)2010-11-22李马介绍如果你是个模板的高手,你就可以将ATL的学习作为一种享受。 在这一节中,我将要尝试解释一些ATL使用的模板技术。我不能保证你读完本节 后能成为一个模板高手,只能是尽我所能让你在读完本文后能够更轻松地理解 ATL的源码。程序35.#include <iostream>
using namespace std;
template <typename T>
T Maximum(const T& a, const T& b) {
return a > b ? a : b;
}
int main() {
cout << Maximum(5, 10) << endl;
cout << Maximum(""A"", ""B"") << endl;
return 0;
}
程序的输出为:10
B
在这里,由于模板 函数的关系,我们就没有必要分别重载int和char数据类型的函数版本了。其中 很重要的一点是,函数的两个参数类型必须一致。但是如果我们传入了不同的数 据类型,我们就需要告知编译器应该把这个参数考虑为哪种数据类型。程序36.#include <iostream>
using namespace std;
template <typename T>
T Maximum(const T& a, const T& b) {
return a > b ? a : b;
}
int main() {
cout << Maximum<int>(5, ""B"") << endl;
cout << Maximum<char>(5, ""B"") << endl;
return 0;
}
程序的输出为:66
B