类模板特化之经典(一)
生活随笔
收集整理的這篇文章主要介紹了
类模板特化之经典(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <iostream>
using namespace std;template<int x>
class sum
{public:enum { number = x + sum<x-1>::number };
};template<>
class sum<0> // 模板特化1
{public:enum { number = 0 };
};template<>
class sum<1> // 模板特化2
{public:enum { number = 1 };
};int fun(int n) // fun(n) = n + fun(n-1)
{if(n == 1)return 1;else if(n == 0)return 0;elsereturn n + fun(n-1);
}int main()
{int x = sum<50>::number; // 相當于x = fun(50)cout << x << endl;int s = fun(50);cout << s << endl;return 0;
}/*運行結果:12751275
*/
通過以上的運行情況可知:sum<50>::number相當于fun(50)的結果,但是兩者是有本質區別的。
fun(50)是通過遞歸函數來實現的,在實際運行時才得到結果。
但是sun<50>::number是在編譯時就確定了結果!
總結
以上是生活随笔為你收集整理的类模板特化之经典(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【jQuery系列之插件】jQuery插
- 下一篇: mvn help:system下载包失败