C++程序问题,求高人修改

2025-05-18 15:10:26
推荐回答(2个)
回答1:

#include 
#include 
#include 

using namespace std;
class String {
public:
    explicit String(const char *str = "<>"); //普通构造函数
    String(const String &other); //拷贝构造函数
String &operator=(const String &other); //赋值函数
void Show() const;
    ~String(void); //析构函数
private:
    char *m_data; // 用于保存字符串
};

String::String(const char *str) { // 普通构造函数
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}

String::String(const String &other) { //拷贝构造函数
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data,other.m_data);
}

void String::Show() const {
cout << m_data << endl;
}

String::~String(void) { //析构函数
delete [] m_data;
}

String &String::operator=(const String &other){ //赋值函数
   if(this != &other) {
   delete [] m_data; // 释放原有的内存资源
   m_data = new char[strlen(other.m_data) + 1];
   strcpy(m_data,other.m_data);
   }
   return *this;
}
  
int main(int argc,char *argv[]) {
String str1("hello");
str1.Show();
String str2;
str2.Show();
String str3(str1);
str3.Show();
str2 = String("well");
str2.Show();
String str4("good");
str4.Show();
return 0;
}

回答2:

类的声明中 char *str; 有用到吗