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;
}

/* 《程式語言教學誌》的範例程式
   https://kaiching.org/
   檔名:u1003.cpp
   功能:示範 C++ 的樣板
   作者:張凱慶*/

第 19 行,使用 usingDemo 取別名 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
$

上一頁 10.2 - 類別樣板
回 C++ 速查手冊首頁
下一頁 單元 11 - 命名空間