在C++中计算物件个数(Objects Counting in C++)

本文探讨了在C++中如何统计不同类型对象的数量。通过设计一个Counter类,并利用模板技术,实现了针对不同类的计数功能,避免了静态成员变量count的冲突问题。通过内嵌Counter对象或让类继承Counter,可以方便地跟踪每个类实例的数量。
摘要由CSDN通过智能技术生成

原文出自:More Effective C++ 电子版 p.452

仅为个人学习,暴露缺点;所以仅供参考,欢迎讨论!

 

需求:当我需要实时了解当前有多少类型的对象同时存在。

设计:比如一开始会这样设计

class Widget {
public:
Widget() { ++count; }
Widget(const Widget&) { ++count; }
~Widget() { --count; }
static size_t howMany() { return count; }

private:
static size_t count;
};

直接在类中增加一个static member data。然后当Widget类型有对象被构造(复制构造)时计数器+1,析构时计数器-1;如果目标仅仅是针对Widget类的话,我们的需求已经被达到了。
但是,当我们需要统计不同类型的对象个数时,就需要换一种更为舒服的实现方式了。

设计一个计数类:

class Counter {
public:
Counter() { ++count; }
Counter(const Counter&) { ++count; }
~Counter() { --count; }
static size_t howMany()
{ return count; }
private:
static size_t count;
};

// 在需要计数的 class 中内嵌一个Counter object。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值