C++11 中,可用關鍵字 using 替樣板取別名 (alias) ,舉例如下
001 | #include <iostream> |
002 | |
003 | template <typename T> class Demo { |
004 | public: |
005 | Demo(const T& a, const T& b) { |
006 | this->a = a; |
007 | this->b = b; |
008 | } |
009 | |
010 | T do_something() { |
011 | return a + b; |
012 | } |
013 | |
014 | private: |
015 | T a; |
016 | T b; |
017 | }; |
018 | |
019 | template <typename T> using D = Demo<T>; |
020 | |
021 | int main() { |
022 | D<int> d1(20, 25); |
023 | std::cout << d1.do_something() |
024 | << std::endl; |
025 | D<double> d2(5.2, 3.95); |
026 | std::cout << d2.do_something() |
027 | << std::endl; |
028 | D<char> d3('1', '2'); |
029 | std::cout << d3.do_something() |
030 | << std::endl; |
031 | |
032 | return 0; |
033 | } |
034 | |
035 | |
036 | /* Kaiching Chang |
037 | u1003.cpp |
038 | 2014-02 */ |
第 19 行,使用 using 將 Demo 取別名 D
019 | template <typename T> using D = Demo<T>; |
因此在 main() 是用 D 而非 Demo
022 | D<int> d1(20, 25); |
023 | std::cout << d1.do_something() |
024 | << std::endl; |
025 | D<double> d2(5.2, 3.95); |
026 | std::cout << d2.do_something() |
027 | << std::endl; |
028 | D<char> d3('1', '2'); |
029 | std::cout << d3.do_something() |
030 | << std::endl; |
編譯執行,結果如下
$ g++ u1003.cpp -std=c++0x |
$ ./a.out |
45 |
9.15 |
c |
$ |
the end
沒有留言:
張貼留言