提问人:sonagi 提问时间:4/10/2016 最后编辑:iammilindsonagi 更新时间:4/10/2016 访问量:85
在 c++ 中,当我使用 operator = 时,会自动调用析构函数?
In c++, when I use operator = , destructor is automatically called?
问:
我做了一个练习,我习惯
将一个对象分配给另一个对象。
我是这样做的。class str
operator =
#include <string.h>
class Str{
private:
char *str;
int len;
int num;
public:
Str(int leng);
Str(char *neyong);
~Str();
int length(void);
char *contents(void);
int compare(Str a);
int compare(char *a);
void operator=(char *a);
void operator=(Str a);
};
Str::Str(char *neyong){
len = strlen(neyong);
str = new char[len + 1];
strcpy(str, neyong);
}
Str::~Str(){
delete[] str;
}
int Str::length(void){
return len;
}
char* Str::contents(void){
return str;
}
void Str::operator=(Str a){
len = a.length();
str = new char[len+1];
strcpy(str, a.contents());
}
(为了便于阅读,我跳过了一些功能)
我执行它,就像下面的代码一样。
Str a("hahahaha"), b("hihihihihihi");
cout << a.contents() << endl;
cout << b.contents() << endl;
a = b;
cout << b.contents() << endl;
cout << a.contents() << endl;
问题:当我赋值时,b 的析构函数是
自动调用。可能会擦除其所有内容,因此不会返回正确的值。a = b
b.~Str()
b.contents()
我该如何解决这个问题????
答: 暂无答案
上一个:双链表三巨头
评论
Str
void Str::operator=(const Str& a)