C++程序运行出错,有好多乱码“葺葺葺葺葺葺葺葺?”,求救~
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/06 06:27:52
C++程序运行出错,有好多乱码“葺葺葺葺葺葺葺葺?”,求救~
#include
#include
class MyString
{
public:
\x05MyString()
\x05{
\x05\x05str=0;
\x05}
\x05MyString(const char* rhs)
\x05{
\x05\x05str=new char[strlen(rhs)+1];
\x05\x05for(int i=0;istr);
\x05\x05strcat(pchar,rhs.str);
\x05\x05return MyString(pchar);
\x05}
\x05MyString::MyString()
\x05{
\x05\x05delete[] str;
\x05}
private:
\x05char* str;
\x05MyString* pMyString;
};
void main( ) {
\x05MyString s1("Hello ");\x05
\x05MyString s2("World!");
\x05cout
#include
#include
class MyString
{
public:
\x05MyString()
\x05{
\x05\x05str=0;
\x05}
\x05MyString(const char* rhs)
\x05{
\x05\x05str=new char[strlen(rhs)+1];
\x05\x05for(int i=0;istr);
\x05\x05strcat(pchar,rhs.str);
\x05\x05return MyString(pchar);
\x05}
\x05MyString::MyString()
\x05{
\x05\x05delete[] str;
\x05}
private:
\x05char* str;
\x05MyString* pMyString;
};
void main( ) {
\x05MyString s1("Hello ");\x05
\x05MyString s2("World!");
\x05cout
你没有重载赋值操作符.
再问: 即使不为它定义并实现赋值运算,编译器也会为该类自动产生一个不是吗
再答: 是的,但是由于指针需要深度复制,而不是浅复制。所以必须自定义重载赋值操作进行深度复制。 而且重载+操作符存在一个问题,new 分配出来的空间,没有 delete 销毁。
再问: 即使不为它定义并实现赋值运算,编译器也会为该类自动产生一个不是吗
再答: 是的,但是由于指针需要深度复制,而不是浅复制。所以必须自定义重载赋值操作进行深度复制。 而且重载+操作符存在一个问题,new 分配出来的空间,没有 delete 销毁。