前端之家收集整理的这篇文章主要介绍了
c – 如何安全(和轻松)计算程序中所有*类的实例?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望能够实例化一个特定的(和其他正常的)类(我可以
修改它的源)并计算该类被实例化的
次数(例如
like this).但是我希望将所有实例包含在我的总计数中,甚至
包括通过标准容器中的复制构造
函数创建的实例.
让我的类的所有构造函数(包括复制构造函数)增加静态计数器是否合适?如果是这样,是否可以通过覆盖其他运算符来确保我的类仍然符合标准容器的要求(即T(x)等于x)?
将静态类变量视为
全局变量,它位于类的命名空间中.使用它
增加或执行其他操作不会对其他
代码产生任何副作用,即构造
函数和其他运算符的行为与以前完全相同.
即,你是对的:只需在构造函数中递增并在析构函数中递减.
当然,正如George指出的那样,如果你想让多线程安全,你需要在访问你的计数器变量(例如一些互斥锁)时添加一些多线程安全代码.或者正如Steven指出的那样,您也可以使用原子递增/递减指令(但用法取决于平台).那些会快得多.但是,您必须要小心,因为在某些情况下,它不适用于多处理器环境.你可以使用Boost的atomic_count来保证安全.
原文链接:https://www.f2er.com/c/117171.html