![]() |
1
8
将静态类变量视为仅在类的命名空间中的全局变量。用它递增或做其他事情不会对其他代码产生任何副作用,也就是说,您的构造函数和其他运算符的行为将与以前完全一样。 也就是说,您是对的:只需增加所有构造函数,减少析构函数。
当然,正如乔治指出的那样,如果你想让它多线程安全,你需要在访问你的计数器变量(例如一些互斥体)的过程中添加一些多线程安全代码。或者如Steven所指出的,您也可以使用原子增量/减量指令(但使用情况将取决于平台)。那会快很多。但是,您必须小心,因为在某些情况下,在多处理器环境中无法工作。你可以使用Boost
|
![]() |
2
9
实现这一点的一种常见方法是使用从中继承的类模板。
所以要使用这个,我会写:
下面是线程安全版本。它使用boost中的类来确保增量、减量和读取操作在支持的平台上是原子操作。
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |