#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();
*/
}