版权声明 请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。 #include <iostream> using namespace std; template<int T> struct factorial { enum { value = T * factorial<T - 1>::value }; }; template<> struct factorial<0> { enum { value = 1 }; }; int main() { cout << factorial<6>::value << endl; return 0; } 这样一段代码看起来有些晦涩。不过改成下面这个样子就好看多了。 #include <iostream> using namespace std; template<int T> class factorial { public: static const int value = T * factorial<T - 1>::value ; }; template<> class factorial<0> { public: static const int value = 1 ; }; int main() { cout << factorial<6>::value << endl; return 0; }