f****4 发帖数: 1359 | 1 void *p = malloc(sizeof(CopyCtr));
CopyCtr *pCC = new (p) CopyCtr(10);
// ..................
pCC->~CopyCtr(); // call destructor ONLY ONLY with placement New
free(p);
这个是很标准的Placement new的用法,CopyCtr是一个test class
我的问题是,如果这个CopyCtr,没有额外申请任何heap资源的话(就是所有
datamember都是内置类型,这个class也不是自己counting reference 的class),那
么不call
pCC->~CopyCtr() 而直接free p。有啥危害没有?
这个不是面试题,就是复习的时候想到的;大家有啥建议没?
我只能想到这个 不规范,还有别的么? |
z****e 发帖数: 2024 | 2 看你dtor里边写什么了吧。
如果dtor本身什么都没有,我个人觉得没事。
如果你dtor里写了东西,就算一句cout,少了屏幕输出,用户是不是也不愿意? |
f****4 发帖数: 1359 | 3 貌似这也是个可能性
【在 z****e 的大作中提到】 : 看你dtor里边写什么了吧。 : 如果dtor本身什么都没有,我个人觉得没事。 : 如果你dtor里写了东西,就算一句cout,少了屏幕输出,用户是不是也不愿意?
|
I*****y 发帖数: 602 | 4 CopyCtr有没有父类?
【在 f****4 的大作中提到】 : 貌似这也是个可能性
|
f****4 发帖数: 1359 | 5 有怎么说,没怎么说?
我有给问过,这样的题目————base和derived class都没申请任何资源,所有
member都是内置类型,base和derived class有定义virtual function,这个时候按道
理说,2个class 都应该定义 virtual destructor来着。问的是,如果这种情况下,没
定义virtual destructor,会有啥问题。
【在 I*****y 的大作中提到】 : CopyCtr有没有父类?
|