Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有问题的代码???我的析构函数有问题吗?_C++_Destructor - Fatal编程技术网

C++ 有问题的代码???我的析构函数有问题吗?

C++ 有问题的代码???我的析构函数有问题吗?,c++,destructor,C++,Destructor,我的代码可以编译并运行,但有人告诉我这是一个很大的问题。我不明白我哪里出错了 另外,声明“char _arrName[2];”并执行赋值“_arrName[2]='\0';”难道不应该是错误的吗?这不是一个“越界”错误吗 #包括 使用名称空间std; 阶级基础{ 受保护的: 字符*\u名称; 公众: virtual~Base(){cout您的代码没有问题。可能是因为您的代码没有缩进,这使其更难阅读100倍 尽管如此,我还是建议您使用std::string而不是普通的C样式字符串。这使您的工作更轻

我的代码可以编译并运行,但有人告诉我这是一个很大的问题。我不明白我哪里出错了

另外,声明“char _arrName[2];”并执行赋值“_arrName[2]='\0';”难道不应该是错误的吗?这不是一个“越界”错误吗

#包括
使用名称空间std;
阶级基础{
受保护的:
字符*\u名称;
公众:

virtual~Base(){cout您的代码没有问题。可能是因为您的代码没有缩进,这使其更难阅读100倍


尽管如此,我还是建议您使用std::string而不是普通的C样式字符串。这使您的工作更轻松。

您的代码没有问题。可能是因为您没有缩进代码,这使代码更难阅读100倍


尽管如此,我还是建议您使用std::string而不是普通的C样式字符串。这使您的工作更容易。

是的,这一行有一个明确的错误

_arrName[2]= '\0';
virtual ~Base() { cout << "Base dtor of " << _name << endl; };
\u arrName
是一个由两个
字符组成的数组,因此您只能使用这两个值
\u arrName[0]
\u arrName[1]
\u arrName[2]

这条线也有问题

_arrName[2]= '\0';
virtual ~Base() { cout << "Base dtor of " << _name << endl; };

virtual~Base()

_arrName[2]= '\0';
virtual ~Base() { cout << "Base dtor of " << _name << endl; };
\u arrName
是一个由两个
字符组成的数组,因此您只能使用这两个值
\u arrName[0]
\u arrName[1]
\u arrName[2]

这条线也有问题

_arrName[2]= '\0';
virtual ~Base() { cout << "Base dtor of " << _name << endl; };

virtual~Base(){cout您的格式很有问题。您真的是这样编码的,还是刚刚出现复制粘贴错误?为什么
char*\u name;
char\u arrName[2]
?std::string有什么问题?
std::string有什么问题?
std::string有什么问题?非常感谢。我仍然不明白为什么这一行:\u arrName[2]='\0';编译并运行时不会出现错误消息或类似信息。@Mattityahu Shmuel:编译并运行某些内容并不一定意味着代码是正确的。许多形式的错误代码(包括这两种)导致未定义的行为。这意味着编译器不必诊断错误,但对程序可能执行的操作没有限制。实际上,任何事情都可能发生。如果幸运的话,代码可能会崩溃,并因此向您发出一些错误警告。非常感谢。我仍然不明白为什么这一行:\u arrName[2]='\0';编译并运行时不会出现错误消息或类似信息。@Mattityahu Shmuel:编译并运行某些内容并不一定意味着代码是正确的。许多形式的错误代码(包括这两种)导致未定义的行为。这意味着编译器不必诊断错误,但对程序可能执行的操作没有限制。实际上,任何事情都可能发生。如果幸运的话,代码可能会崩溃,并因此向您发出一些错误警告。