Pammer 发表于 2020-4-8 21:16

求帮忙看看这段代码里有什么错误?

本帖最后由 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:33

本帖最后由 我的爱是你 于 2020-4-8 21:36 编辑

没有错,但你应该这样了

由于你没写copy构造 所以函数执行结束后会对同一块内存析构两次 自然报错。
类默认copy构造为浅拷贝,你用对象初始化类时 应该对其开辟内存。

semiuel 发表于 2020-4-8 21:52

一脸懵逼的进来,然后一脸懵逼的出去,假装我看懂了。

Pammer 发表于 2020-4-9 07:39

semiuel 发表于 2020-4-8 21:52
一脸懵逼的进来,然后一脸懵逼的出去,假装我看懂了。

继续水!
页: [1]
查看完整版本: 求帮忙看看这段代码里有什么错误?