小编犯的错误是:
1. 对象的指针比较大小,要使用strcmp(s1.ptr, s2.ptr);
2. +,+= 运算符重载时,内存需要创建新的空间,建议使用 ”换杯子“ 的方法进行
例题如下:
class MyString{
char *ptr;
public:
int size()const{
return strlen(ptr);
}
MyString(){
ptr=new char[1];
ptr[0]=' ';
}
MyString(const char *p){
ptr=new char[strlen(p)+1];
strcpy(ptr,p);
}
MyString(const MyString &str){
ptr=new char[str.size()+1];
strcpy(ptr,str.ptr);
}
~MyString(){
delete []ptr;
}
friend ostream & operator<<(ostream & out,const MyString &str);
friend MyString operator+(const MyString &s1,const MyString &s2);
friend int operator==(const MyString &s1,const MyString &s2);
friend int operator!=(const MyString &s1,const MyString &s2);
friend int operator<(const MyString &s1,const MyString &s2);
friend int operator<=(const MyString &s1,const MyString &s2);
friend int operator>(const MyString &s1,const MyString &s2);
friend int operator>=(const MyString &s1,const MyString &s2);
MyString & operator=(const MyString &s);
MyString & operator+=(const MyString &s);
char operator[](int i);
};
对该类重载教材233页表6-1中列出的那些运算符(这些运算符的含义和string类一致)。
main函数也写好了,请根据上面的类声明部分和main函数的内容,将未实现的运算符函数进行实现。main函数如下:
int main(){
MyString s1("Hello"),s2("World"),s3("China");
cout<<(s1>s2)<<" "<<(s1>=s2)<<" "<<(s1<=s2)<<" "<<(s2=0;i--)
cout<
正确解答如下:
#include
using namespace std;
ostream& operator<<(ostream& out,const MyString &str){
out<


