我已经读到,当我们到达自动变量范围的末尾时,将调用它来清理资源。
因此,基本数据类型是否具有析构函数?还是通过调用析构函数来清理资源与在范围结束时删除自动变量有何不同?
具有析构函数的对象将在对象的生存期结束时调用它们。
没有析构函数的对象(例如,像int
或float
之类的原始类型的变量)仍将终止其生命周期,但不会调用任何析构函数(因为没有要调用的任何析构函数)。
嗯....他们种类有析构函数。例如,此代码将起作用:
using foo = int;
int main()
{
foo i;
i.~foo();
}
但是请注意两件事:(1)using
是必需的(C ++不想看到~int
),和(2)它什么都不做。对于某些类型的模板用例,对待具有原始类型,函数类型的析构函数的基本类型asough很重要(这使得实现std::vector
之类的东西要容易得多),但是基本类型不拥有任何资源,因此销毁它们是无人操作。