|
|
1
52
您只需声明类“new operator private:
将“operator new”设为私有有效地防止类外的代码使用“new”创建x的实例。 若要完成操作,应隐藏“operator delete”和这两个运算符的数组版本。 由于C++ 11,还可以显式删除函数:
|
|
|
2
6
我不相信你的动机。 有充分的理由在免费商店上创建raii类。 例如,我有一个raii lock类。我有一条通过代码的路径,只有在某些条件成立时才需要锁(它是一个视频播放器,我只需要在渲染循环期间持有锁,如果我已经加载并播放了视频;如果没有加载任何内容,我不需要它)。因此,在自由存储上创建锁的能力(使用作用域为/auto-ptr)非常有用;它允许我使用相同的代码路径,而不管是否需要取出锁。 也就是说,像这样的事情:
如果我只能在堆栈上创建锁,我就不能这样做… |
|
|
3
2
@ DrPizza: 你有一个有趣的观点。不过,请注意,在某些情况下,raii习语并不一定是可选的。 不管怎样,也许一个更好的方法来解决你的困境是在你的锁构造函数中添加一个参数来指示是否需要锁。例如:
然后你可以写:
|
|
|
4
0
在我的特殊情况下,如果不需要锁,那么互斥锁甚至不存在,所以我认为这种方法更难适应。 我想我真的很难理解的是禁止在免费商店中创建这些对象的理由。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |