C++ 速查手冊
10.3 - 樣板別名
C++11 中,可用關鍵字 using 替樣板取別名 (alias) ,舉例如下
#include <iostream>
template <typename T> class Demo {
public:
Demo(const T& a, const T& b) {
this->a = a;
this->b = b;
}
T do_something() {
return a + b;
}
private:
T a;
T b;
};
template <typename T> using D = Demo<T>;
int main() {
D<int> d1(20, 25);
std::cout << d1.do_something() << std::endl;
D<double> d2(5.2, 3.95);
std::cout << d2.do_something() << std::endl;
D<char> d3('1', '2');
std::cout << d3.do_something()<< std::endl;
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u1003.cpp
功能:示範 C++ 的樣板
作者:張凱慶*/
第 19 行,使用 using 將 Demo 取別名 D
template <typename T> using D = Demo<T>;
因此在 main() 是用 D 而非 Demo
D<int> d1(20, 25);
std::cout << d1.do_something() << std::endl;
D<double> d2(5.2, 3.95);
std::cout << d2.do_something() << std::endl;
D<char> d3('1', '2');
std::cout << d3.do_something()<< std::endl;
編譯執行,結果如下
$ g++ u1003.cpp -std=c++0x |
$ ./a.out |
45 |
9.15 |
c |
$ |