
 
#include <iostream>
#include <cstring>
using namespace std;
//定义类
class myString
{ 
private:
char *str;
int size;
public:
//无参构造
myString():size(32)
{ 
str = new char[size];
cout << "无参构造" << endl;
}
//有参构造
myString(const char *s)
{ 
size = strlen(s);
str = new char[size + 1];
strcpy(str, s);
cout << "有参构造" << endl;
}
//拷贝构造
myString(const myString &other)
  { 
size = other.size;
str = new char[size + 1];
strcpy(str, other.str);
cout << "拷贝构造" << endl;
}
//析构函数
~myString()
      { 
delete []str;
cout << "析构函数" << endl;
}
//判空函数
bool empty()
     { 
if(strlen(str) == 0)
return true;
else
return false;
}
//size函数
int mysize()
     { 
return size;
}
//c_str函数
const char *c_str()
     { 
return str;
}
//at函数
char &at(int i)
        { 
if(i >= size || i < 0)
            { 
cout << "段错误" << endl;
}
return str[i];
}
void show()
        { 
cout<<str<<endl;
}
};
int main()
    { 
myString s1;//无参构造
        myString s2("hello");//有参构造 
myString s3(s2);//拷贝构造
cout<<"s3=";
s3.show();
int a=s2.mysize();//计算长度
cout<<"s2长度="<<a<<endl;
/*
        myString s4("dadwad"); 
char buf[]="";
strcpy(buf,s4.c_str());//把c++z转变为c
s4.at(2)='C';//改变对应位置的值
cout<<"buf="<<buf<<endl;
cout<<"s4=";
s4.show();
*/
}



















