gpt4 book ai didi

c++ - 如何使用非指针属性的析构函数

转载 作者:太空狗 更新时间:2023-10-29 19:53:15 24 4
gpt4 key购买 nike

我坚持使用我的析构函数我的简短代码结构是这样的

class test
{
private:
string code;
int digit, num_digit;

//destructor
~test()
{
if(digit >= 0 && digit > num_digit)
{
for(unsigned int i=0; i<code.length(); i++) delete &code[i];
}
}
};

<more code> .............
<more code> .............

int main()
{
Test test1
test1.~test();
}

在执行析构函数部分时,我的内核中止了。 Unix 编译器说 Aborted - 'core dumped'有什么想法吗?

最佳答案

发生中止是因为试图删除一个不是动态分配的对象:删除通过new创建的对象(和 delete[] for new[])code 成员不是动态分配的。当包含对象被销毁时,它将自动销毁。在 Test 的情况下,没有理由手动编写析构函数。

这是不正确的:

test1.~test();

不要显式调用对象的析构函数。当 test1 超出范围时,将自动调用析构函数。对于动态分配的对象,析构函数将在 deleted 时被调用。

关于c++ - 如何使用非指针属性的析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com