#include <iostream>
#include <cstring>
using namespace std;
class my_String
{
private:
char *str; //记录C风格的字符串指针
int size; //记录字符串的实际长度
public:
my_String():size(10) //无参构造
{
str = new char[size]; //默认构造出一个长度为10的字符串
strcpy(str,"");
}
my_String(const char *s) //有参构造
{
size = strlen(s);
str = new char[size + 1];
strcpy(str, s);
}
//初始化列表:初始化指针(让该指针指向一个新申请的含值(被拷贝的指针指向的大小)的空间)
my_String(my_String &other):str(new char(*(other.str)))//深拷贝构造函数
{
strcpy(str, other.str);
}
~my_String() //析构函数
{
delete str;
};
bool my_empty()//判断是否为空的函数
{
if(strlen(str) == 0)
{
return false;
}
else
{
return true;
}
}
int my_size() //返回该对象大小的函数
{
return size;
}
char *my_str() //返回该对象字符串的首地址函数
{
return str;
}
char &my_at(int pos)//返回该对象第x位的字符的函数
{
return str[pos-1];
}
};
int main()
{
//有参类型
char s[128] = "";
cout << "请输入一个字符串:";
cin >> s;
my_String str1(s);//用 my_String类 定义名为str 并传入s
cout << "str1 = " << str1.my_str() << endl;
//拷贝构造函数
my_String str2 = str1; //str2(str1)也行
cout << "str2 = " << str2.my_str() << endl;
//size
cout << "str1.my_size = " << str1.my_size() << endl;
//empty
cout << "str1.my_empty = " << str1.my_empty() << endl;
//at函
int n;
cout << "查找字符串第几位:";
cin >> n;
cout << "第" << n << "位 = " << str1.my_at(n) << endl;
return 0;
}
定义类my_string