C++学习笔记28:静态成员应用:不用循环求1到n的和

发布时间:2026/5/26 21:41:42

C++学习笔记28:静态成员应用:不用循环求1到n的和 目录一、题目要求二、核心思路三、为什么要用 static 静态成员四、代码实现五、几个注意事项1. 类外定义静态成员变量2. 为什么要写 Init 函数3. 用 new 创建的数组要释放六、小结一、题目要求题目大意是求1 2 3 ... n的结果。但是题目会限制不能使用1. 乘法、除法 2. for、while 循环 3. if、else、switch、三目运算符 4. 递归二、核心思路既然不能写循环那就得想办法让某个操作执行 n 次。再C中创建对象时自动调用构造函数。如果创建一个对象数组A arr[5];那么会创建 5 个对象也就会调用 5 次构造函数。三、为什么要用 static 静态成员如果把 sum 和 i 都写成普通成员变量那么每一个对象都有一份自己的数据无法累加。二静态成员变量属于整个类所有对象共享一个数据。所以可以定义这两个静态成员变量static int _i; static int _sum;其中_i 用来记录前面加到几 _sum 用来保存累加结果每创建一个对象就在构造函数中执行_sum _i;四、代码实现#include iostream using namespace std; class Sum { public: Sum() { _sum _i; } static int GetSum() { return _sum; } static void Init() { _i 0; _sum 0; } private: static int _i; static int _sum; }; int Sum::_i 0; int Sum::_sum 0; int main() { int n; cin n; Sum::Init(); // Sum s[n]; Sum* arr new Sum[n]; cout Sum::GetSum() endl; delete[] arr; return 0; }输入:10运行结果55五、几个注意事项1. 类外定义静态成员变量int Sum::_i 0; int Sum::_sum 0;静态成员变量是在类内部声明外部定义和初始化的。2. 为什么要写 Init 函数static void() { _i 0; _sum 0; }如果 OJ 有多个测试用例或者同一个程序多次调用这个逻辑静态成员不会变成0。每次计算之前最好先重置Sum::Init();这样可以避免上一次计算结果影响下一次。OJ 判题不只是测一个输入而是会用很多测试用例如果代码指通过了部分测试用例说明可能存在边界情况没有处理一定要多注意。3. 用 new 创建的数组要释放如果写成Sum* arr new Sum[n];这样可以输入的 n 动态创建数组。用完之后记得释放delete[] arr;六、小结本篇主要学习了 static 静态成员的一个应用不用循环求 1 到 n 的和。需要记住静态成员变量属于整个类所有对象共享一份数据创建对象时自动调用构造函数创建对象数组时会多次调用构造函数可以在构造函数中完成累加静态成员变量必须在类外定义静态变量在多次测试前要注意重置动态数组可以用 new 创建最后用 delete[] 释放。

相关新闻