计数器:使用类
设计一个计数器类,当建立该类的对象时其初始状态为0,考虑为计数器定义哪些成员?
#include <iostream>
using namespace std;
class Counter {
private:
int count; // 成员变量,用于存储计数器的当前值
public:
// 构造函数,初始化计数器为0
Counter() : count(0) {}
// 成员函数,用于增加计数器的值
void increment() {
count++;
}
// 成员函数,用于获取计数器的当前值
int getCount() const {
return count;
}
// 成员函数,用于重置计数器的值为0
void reset() {
count = 0;
}
};
int main() {
// 创建Counter对象
Counter counter;
// 获取并输出初始计数值
cout << "Initial count: " << counter.getCount() <<endl;
// 增加计数
int n;
while(cin>>n)//利用while可以进行多数据输入输出
{
for(int i=1;i<=n;i++)//利用循环显示改变输出数据
{
counter.increment();
}
// 获取并输出当前计数值
cout << "Current count after incrementing"<<n<<"times " << counter.getCount() << endl;
// 重置计数
counter.reset();
// 获取并输出重置后的计数值
cout << "Count after reset: " << counter.getCount() << endl;
}
return 0;
}
计数器问题的C++代码实现
-
基本计数器实现:
- 创建一个类
Counter
,其中包含一个私有整型成员变量count
作为计数器的基础值。
class Counter { private: int count; public: Counter() : count(0) {} // 初始化计数器为0 void increment() { count++; } // 增加计数 void decrement() { if (count > 0) count--; } // 减少计数(可以增加边界检查) int getCount() const { return count; } // 获取当前计数值 };
- 创建一个类
-
倒计时计数器:
- 倒计时计数器可以在基础计数器上扩展,增加一个设定目标值的功能,并在计数到0时触发某种事件(例如,函数回调)。
class CountdownTimer : public Counter { private: int target; std::function<void()> onFinishCallback; public: CountdownTimer(int t, std::function<void()> callback) : target(t), onFinishCallback(callback) { count = target; } void tick() { increment(); // 模拟时间流逝,每tick一次减一 if (count == 0) { onFinishCallback(); } } };
-
线程安全计数器:
- 如果计数器要在多线程环境下使用,需要添加互斥锁或其他同步机制来保证线程安全。
#include <mutex> class ThreadSafeCounter { private: std::mutex mtx; int count; public: ThreadSafeCounter() : count(0) {} void increment() { std::lock_guard<std::mutex> lock(mtx); count++; } void decrement() { std::lock_guard<std::mutex> lock(mtx); if (count > 0) count--; } int getCount() const { std::lock_guard<std::mutex> lock(mtx); return count; } };
-
高级功能:
计数器可以扩展更多的功能,如限次数计数、周期计数、条件计数等,根据实际应用场景进行设计和实现。