求帮忙看看这段代码里有什么错误?
本帖最后由 Pammer 于 2020-4-9 07:39 编辑#include<iostream>
using std::istream;
using std::ostream;
class String
{
public:
String(const char* str = "\0");
void SetString(const char* str);
virtual ~String();
private:
char* str = nullptr;
protected:
};
String::String(const char* str)
{
SetString(str);
return;
}
void String::SetString(const char* str)
{
if (this->str != nullptr)
delete[] str;
size_t length = strlen(str) + 1;
this->str = new char;
strcpy_s(this->str, length, str);
return;
}
String::~String()
{
delete[] this->str;
}
这段代码在执行~String的时候会报错,实在是看不出来是什么错误了,求教{:301_973:} 本帖最后由 我的爱是你 于 2020-4-8 21:36 编辑
没有错,但你应该这样了
由于你没写copy构造 所以函数执行结束后会对同一块内存析构两次 自然报错。
类默认copy构造为浅拷贝,你用对象初始化类时 应该对其开辟内存。 一脸懵逼的进来,然后一脸懵逼的出去,假装我看懂了。 semiuel 发表于 2020-4-8 21:52
一脸懵逼的进来,然后一脸懵逼的出去,假装我看懂了。
继续水!
页:
[1]