★08.关于成员模板

2017-06-30  本文已影响0人  iDragonfly

定义

template <typename T>
class A {
public:
    // 成员函数模板---------定义置于类内
    template <typename F>
    F fun1(T t, F f) {
        return F();
    }

    // 成员函数模板---------定义置于类外
    template <typename F>
    F fun2(T t, F f);
};

// 成员函数模板的定义
template <typename T>
template <typename F>
F A::fun2(T t, F f) {
    return F();
}

特化

template <typename T>
class A {
public:
    // 成员函数模板---------定义置于类内
    template <typename F>
    F fun(T t, F f) {
        return F();
    }

    // 成员函数模板特化---------不可以将定义置于类外
    template <int>
    int fun(T t, int f) {
        return 0;
    }
};

// 无法在类外定义成员函数模板的特化
//template <typename T>
//template <>
//int A::fun(T t, int f) {
//    return 0;
//}

注意事项

上一篇 下一篇

猜你喜欢

热点阅读