是否允许delete this;delete-statement是将在该类实例上执行的最后一个语句?当然,我确信this-pointer所代表的对象是newly-created.
我在考虑这样的事情:
void SomeModule::doStuff()
{
// in the controller, "this" object of SomeModule is the "current module"
// now, if I want to switch over to a new Module, eg:
controller->setWorkingModule(new OtherModule());
// since the new "OtherModule" object will take the lead,
// I want to get rid of this "SomeModule" object:
delete this;
}
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?
c++ memory-management new-operator self-destruction delete-operator
我想确保我的RAII类总是在堆栈上分配.
如何通过"新"运算符阻止类分配?
有没有人知道我怎么能在平台无关的C++代码中阻止在堆上创建对象?也就是说,对于"Foo"类,我想阻止用户这样做:
Foo *ptr = new Foo;
Run Code Online (Sandbox Code Playgroud)
并且只允许他们这样做:
Foo myfooObject;
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法?
干杯,
假设我在库中定义了一个类
class Base {};
Run Code Online (Sandbox Code Playgroud)
我将该类发布给用户.
一个用户定义了一个新类
class Derived : public Base {}
Run Code Online (Sandbox Code Playgroud)
我可以做些什么Base来防止用户Derived在堆上创建实例?
例如,这是允许的
Derived dd;
Run Code Online (Sandbox Code Playgroud)
这不是
Derived* dd = new Derived();
Run Code Online (Sandbox Code Playgroud)
谢谢,