C++ 析构函数格式

标签 c++ destructor

 void arrayList<T>::erase(int theIndex) {
            // valid index, shift elements with higher index
            copy(element + theIndex + 1, element + listSize, element + theIndex);

            element[--listSize].~T(); // invoke destructor 
        }

代码 element[--listSize].~T() 看起来很奇怪。它用于删除动态分配的元素。有谁知道为什么我们可以使用这种语法?

编辑

问题解决了。

最佳答案

如果您使用placement new 运算符为elements[i] 分配了内存,这将很有用。参见 What is "placement new" and why would I use it?了解详情。

关于C++ 析构函数格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877998/

相关文章:

c++ - 线程安全有界队列在 Boost 1.54 中挂起

c++ - C++ 中的大矩阵创建

c++ - 复制构造函数调用析构函数 C++

c++ - _Exit 在 C++ 程序中的行为如何?

c++ - 不同类型和不同编译器的 std::isinf 的不同结果

c++ - 无法正确跟踪鼠标移动,setMouseTracking 无效 - Qt

c++ - 根据 vector<bool> 的内容排序 vector<vector<bool>>

c++ - 如何在具有指向对象的指针数组的类中创建复制构造函数和析构函数,其中对象本身具有指向 int 的指针数组

c++ - 无法访问单例类析构函数中的私有(private)成员

c++ - 包含所述对象 vector 的对象的析构函数