C++中是否只能使用堆栈变量?

sum*_*ght 6 c++ stack

目前我想在多线程环境中创建包装器访问器类.这个类的目的很简单 - 抓住它的结构锁定并释放它的破坏锁定.除此之外,它与普通指针相同.此外,我想防止在堆区域上创建它以确保最终释放锁.

逆是相当容易的(私有构造函数与工厂方法),但我不知道只有堆栈的变量是可能的.反正呢?

Arm*_*yan 12

那么,你operator new为你的班级超载并将其私有化呢?

  • 是的,即使使用私有的`operator new`,它也可以像5行代码一样编写一个包装对象,*包含*你的对象,并且可以在堆上分配.与编写C++库代码时一样,您无法决定用户*必须如何*使用它.你必须假设库用户是理智的,并且实际上不会试图打破他自己的程序.如果你做出这个假设,那么你就不需要*让你无法堆积你的对象. (4认同)