class Sum { public: Sum() { sum += i; //每一次调用都会和之前的相加起来,因为两个变量被static修饰了, ++i; } static void Init() { i = 1; sum = 0; } static int GetSum() { return sum; } private: static int i; //static修饰后,在静态去了,是属于整个类的了不是输入某一个对象 static int sum; //static修饰后,在静态去了,是属于整个类的了不是输入某一个对象 }; int Sum::i = 1; int Sum::sum = 0; class Solution { public: int Sum_Solution(int n) { Sum::Init(); //为了保证每一组数据测完之后,值回到开始前 Sum a[n]; //数据有多少个,就调用多少次默认构造函数 return Sum::GetSum(); // } };
思路:主要是利用static特性和构造函数,定义一个Sum类出来,在里面完成1~200的求和,初始化(还原),返回相加后的值等操作。
1.Sum中出来把i和sum都用static 修饰,然后i和sum就是属于整个类了,不是属于某一个对象,a[n]代表有多个数据,要多次调用 构造函数,就会使用上次构造函数的i和sum,不会还原成 i= 1,sum = 0;
2.Sum a[n]表示一组数据有多少个 如:a[5],就说明这一组数据有5个 //0,1, 2, 3, 4
3.Init函数是为了下一组数据做准准备,还原最开始的值i = 1, sum = 0;