注册 登录
编程论坛 VC++/MFC

C++ 模板问题

③分钟热度 发布于 2011-08-02 22:15, 423 次点击
#include <iostream>
using namespace std;
template<int N> struct factorial;  
template<> struct factorial<1> { enum { value = 1 }; };
template<int N> struct factorial{ enum { value = N*factorial<N-1>::value }; };

int main(int argc, char* argv[])
{
    cout << factorial<6>::value << endl;
    return 0;
}
说一下三个template分别做了什么,谢谢了。
意思是做一个递归,计算1*2*....n。
3 回复
#2
hahayezhe2011-08-06 15:13
模板特化
#3
hahayezhe2011-08-06 15:14
factorial<6>::调用template<int N> struct factorial{ enum { value = N*factorial<N-1>::value }; };
当为1时调用template<> struct factorial<1> { enum { value = 1 }; };
 结束
#4
③分钟热度2011-09-11 18:49
谢了。
1