模板功能:
template<typename T> void kill(T* type)
{
type->~T();
}
呼叫:
int x= 5;
kill(&x);
哇,它汇编了!?像int
这样的原始类型如何具有析构函数?它也适用于char
,bool
等。
答案 0 :(得分:4)
16 [注意:显式调用析构函数的表示法可用于任何标量类型 名称(5.2.4)。允许这样就可以编写代码而无需知道是否 析构函数存在于给定类型。例如,
typedef int I; I* p; p->I::~I();
-end note]
答案 1 :(得分:1)
标准的相关部分是§5.2.4/ 1:
在点后使用伪析构函数名称。或箭头 - &gt; operator表示由type-name命名的非类类型的析构函数。结果只能用作函数调用operator()的操作数,并且这种调用的结果类型为void。唯一的效果是在点或箭头之前评估后缀表达式。