Redian新闻
>
问一个private destructor的问题
avatar
问一个private destructor的问题# Programming - 葵花宝典
s*i
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上?
avatar
P*e
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

avatar
X*r
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上

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。