小编mar*_*eek的帖子

复制构造函数调用析构函数c ++

我有一个my的测试类来制作我自己的字符串函数.我有复制析构函数的问题.

我有2个字符串:s1和s2.我调用函数s3 = s1 + s2;

它首先调用operator +函数,当它完成时调用析构函数.因此,operator = function中的字符串对象为空.我怎样才能解决这个问题?

析构函数:

String::~String() {
  if (this->str)
    delete[] str;
  str = NULL;
  len = 0;
}
Run Code Online (Sandbox Code Playgroud)

复制构造函数:

String::String(const String& string) {
  this->len = string.len;
  if(string.str) {
    this->str = new char[string.len+1];
    strcpy(this->str,string.str);
  } else {
    this->str = 0;
  }
}
Run Code Online (Sandbox Code Playgroud)

operator=:

String & String::operator= (const String& string) {
  if(this == & string)
    return *this;

  delete [] str;

  this->len = string.len;

  if(string.str) {
    this->str = new char[this->len];
    strcpy(this->str,string.str);
  } else {
    this->str = …
Run Code Online (Sandbox Code Playgroud)

c++ destructor copy-constructor operator-keyword

1
推荐指数
1
解决办法
2648
查看次数