c++ 中全局变量 enum使用
小陆zi 2018-06-02 04:38:22 大家好 看到如下代码有很多不懂的地方,求指点,谢谢。
#include<iostream>
using namespace std;
int Result;
//主模板
template<int N> //模板
class Fibonacci
{
public:
enum{Result = Fibonacci<N-1>::Result + Fibonacci<N-2>::Result };
//枚举,带有隐含计算
};
//完全特化模板
template<>
class Fibonacci<1> //带常参数1的构造函数
{
public:
enum { Result = 1 };
//给枚举赋初值1
};
//完全特化模板
template<>
class Fibonacci<0> //带参数0的模板
{
public:
enum { Result = 0 };
//给枚举赋初值0
};
int main()
{
std::cout << "第20项的Fibonacci数是:" << Fibonacci<20>::Result << std::endl;
return 1;
}
第一个问题:
int Result是全局变量。在c++类中为什么可以使用Fibonacci<N-1>::Result?这个变量不是类中的成员变量。
第二个问题:
Fibonacci<20>::Result 这个表达是说明要递归20次?怎么理解递归的逻辑?
谢谢