1. 只在堆上申请
class A
{
protected:
A(){}
~A(){}
public:
static A* create()
{
return new A();
}
void destory()
{
delete this;
}
};
构造函数和析构函数为protected,则不能直接在栈上调用其进行构造与析构。另外,protected可以允许继承后子类继续实现只在堆上申请对象;
2.只在栈上申请
class A
{
private:
void* operator new(size_t t){} // 注意函数的第一个参数和返回值都是固定的
void operator delete(void* ptr){} // 重载了new就需要重载delete
public:
A(){}
~A(){}
};