相关疑难解决方法(0)

内置类型的析构函数(int,char等..)

在C++中,以下代码给出了编译器错误:

void destruct1 (int * item)
{
  item->~int();
}
Run Code Online (Sandbox Code Playgroud)

这段代码几乎相同,我只是将int解压缩到另一种类型,并发生了一些神奇的事情:

typedef int myint;

void destruct2 (myint * item)
{
  item->~myint();
}
Run Code Online (Sandbox Code Playgroud)

为什么第二个代码有效?int是否因为已被typedefed而获得析构函数?

如果你想知道为什么一个人想要这样做:这来自重构C++代码.我们正在删除标准堆并将其替换为自制池.这要求我们调用placement-new和析构函数.我知道调用原始类型的析构函数是没用的,但是我们在代码中想要它们,以防我们后来用实际类替换POD.

发现赤裸裸的int不起作用但是类型合适的东西确实令人惊讶.

顺便说一句 - 我有一个涉及模板功能的解决方案.我们只是在模板中输入dede,一切都很好.

c++ constructor destructor typedef

59
推荐指数
1
解决办法
8083
查看次数

标签 统计

c++ ×1

constructor ×1

destructor ×1

typedef ×1