s****i 发帖数: 150 | 1 我想要create instance ONLY on stack,下面的做法是否正确阿?
class temp
{
private:
~temp() {;}
friend class Final;
};
class Final: virtual public temp
{
//Define as usual
}
=============================
我有点搞不清,如果不用friend的话,会怎么样?比如
class final2
{
public:
static final2* Create() { return (new final2()) ; }
private:
~final2(){} ;
} ;
class child : public final2
{
public:
child(){ ;}
} ;
int main()
{
final2 *f ;
f = final2::Create() ;
}
这个时候我的object是在heap上,还是stack上? |
P********e 发帖数: 2610 | 2 你前面temp能是create on heap
private destructor 能保证instance ONLY on HEAP
如果要STACK的话,overload operator new/delete as private, 其实严谨一点
malloc, alloc, realloc都要overload
你的方法是在heap上
【在 s****i 的大作中提到】 : 我想要create instance ONLY on stack,下面的做法是否正确阿? : class temp : { : private: : ~temp() {;} : friend class Final; : }; : class Final: virtual public temp : { : //Define as usual
|
X****r 发帖数: 3557 | 3 只要operator new就可以了,和malloc之类的无关。
【在 P********e 的大作中提到】 : 你前面temp能是create on heap : private destructor 能保证instance ONLY on HEAP : 如果要STACK的话,overload operator new/delete as private, 其实严谨一点 : malloc, alloc, realloc都要overload : 你的方法是在heap上
|