Redian新闻
>
请教:地下室漏水 (转载)
avatar
请教:地下室漏水 (转载)# Living
t*y
1
Suppose you're responsible for writing class MyClass as part of a static
library.
a) How do you enforce that a single instance of this class be used at
compile-time? b) How do you enforce that instances only be allocated on the
stack, but not on the heap, at compile-time?
a)应该是用singleton
b)呢?
avatar
b*e
2
【 以下文字转载自 Living_For_Better 俱乐部 】
发信人: blackstone (BX), 信区: Living_For_Better
标 题: 请教:地下室漏水
发信站: BBS 未名空间站 (Sun May 30 20:45:40 2010, 美东)
地下室水阀门连着外面sprinkler的管道有漏的地方(drywall里面),一打开,水就沿
墙下面渗到地下室里来,这个要把drywall打开,找人来修大约要多少钱?想问问大家
,心里好有个谱,谢谢!
avatar
l*e
3
private operator 'new'

the

【在 t*******y 的大作中提到】
: Suppose you're responsible for writing class MyClass as part of a static
: library.
: a) How do you enforce that a single instance of this class be used at
: compile-time? b) How do you enforce that instances only be allocated on the
: stack, but not on the heap, at compile-time?
: a)应该是用singleton
: b)呢?

avatar
p*7
4
用new就在heap了,直接用构造函数吧

【在 l******e 的大作中提到】
: private operator 'new'
:
: the

avatar
a*n
5
既然是private new, 你怎么调用new? 除非friend
所以一般做法就是private new

【在 p********7 的大作中提到】
: 用new就在heap了,直接用构造函数吧
avatar
l*e
6
you didn't get it.

【在 p********7 的大作中提到】
: 用new就在heap了,直接用构造函数吧
avatar
p*7
7
I see.
you are right

【在 l******e 的大作中提到】
: you didn't get it.
avatar
h*6
8
反过来,只允许分配在堆,而不允许在栈,方法是私有析构函数。
new之后不调用delete,调用一个自己写的函数销毁内存。
avatar
m*n
9
为什么new之后不调用delete?

【在 h**6 的大作中提到】
: 反过来,只允许分配在堆,而不允许在栈,方法是私有析构函数。
: new之后不调用delete,调用一个自己写的函数销毁内存。

avatar
M*5
10
you didn't get it either.
这位han6说得是,如果只能在heap上创建类,怎么做?
答案就是,将析构函数设成private,这样,如果你在stack上定义一个对象,在程序结
束的时候,系
统会自动调用析构函数。但是现在析构函数是private的,所以就会出错,也就是说,
系统无法销毁对
象。那么就不能在stack上创建对象,所以只能在heap上用new来创建对象。这样一来,
又有个问题,
就是对象分配的空间要释放啊?那怎么办呢,就在类里面定义一个接口函数(注意,
public的函数才能
叫作接口函数),在这个函数里面调用析构函数,然后在其他函数中调用这个接口函数
,就可以释放对
象。
这就是,在new之后不调用delete,而调用这个接口函数的意思。
you got it?

【在 m*****n 的大作中提到】
: 为什么new之后不调用delete?
avatar
c*w
11
可以把constructor 定义成private的吗? 提供一个函数, GetInstance等,函数里面用
new来得到instance.

【在 h**6 的大作中提到】
: 反过来,只允许分配在堆,而不允许在栈,方法是私有析构函数。
: new之后不调用delete,调用一个自己写的函数销毁内存。

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