如何调试Cpp程序中的destruct函数
How to debug destruct function in Cpp program
代码
我正在尝试调试以下代码:
#include <iostream>
class wine
{
public:
//wines name/brand
char *name;
//wines age
int age;
//in liters
long double volume;
//def construct
wine();
//construct
wine(char *name, int age, long double volume) : name(name), age(age), volume(volume) {};
//destruckt
~wine();
};
wine::wine() {}
wine::~wine()
{
delete &name;
delete &age;
delete &volume;
}
int main()
{
char a[5] = { 'G','a','l','l','o' };
wine old(a, 50, 1);
for(int i = 0; i < 5; i++)
{
std::cout << a[i];
}
while (!std::cin.ignore());
delete &old;
return 1;
}
我在调试时观察到的是 destruct 函数是错误的,但我没有实现其他任何东西
您不使用 new
进行任何动态内存分配,因此您也不需要 delete
。删除 delete &old;
。当 old
超出范围(在 main
函数的末尾)时,将自动调用析构函数。
well what i have observed while debugin is that the destruct function
is the error
没错。您的 wine
class 不包含任何动态分配的内容,因此不需要使用 delete
删除任何内容。然而你的析构函数试图删除它的成员变量。
删除析构函数中的那些 delete
调用。如果你愿意,你可以把析构函数作为一个整体去掉(这样 wine
就会留下一个没有任何特殊作用的默认析构函数)。
代码
我正在尝试调试以下代码:
#include <iostream>
class wine
{
public:
//wines name/brand
char *name;
//wines age
int age;
//in liters
long double volume;
//def construct
wine();
//construct
wine(char *name, int age, long double volume) : name(name), age(age), volume(volume) {};
//destruckt
~wine();
};
wine::wine() {}
wine::~wine()
{
delete &name;
delete &age;
delete &volume;
}
int main()
{
char a[5] = { 'G','a','l','l','o' };
wine old(a, 50, 1);
for(int i = 0; i < 5; i++)
{
std::cout << a[i];
}
while (!std::cin.ignore());
delete &old;
return 1;
}
我在调试时观察到的是 destruct 函数是错误的,但我没有实现其他任何东西
您不使用 new
进行任何动态内存分配,因此您也不需要 delete
。删除 delete &old;
。当 old
超出范围(在 main
函数的末尾)时,将自动调用析构函数。
well what i have observed while debugin is that the destruct function is the error
没错。您的 wine
class 不包含任何动态分配的内容,因此不需要使用 delete
删除任何内容。然而你的析构函数试图删除它的成员变量。
删除析构函数中的那些 delete
调用。如果你愿意,你可以把析构函数作为一个整体去掉(这样 wine
就会留下一个没有任何特殊作用的默认析构函数)。