#include <iostream>
#include <cstring>
using namespace std;
class myString
{
private:
char *str; //记录c风格的字符串
int size; //记录字符串的实际长度
public:
//无参构造
myString():size(10)
{
str = new char[size];
strcpy(str,"");
}
//有参构造
myString(const char *s)
{
size = strlen(s);
str = new char[size+1];
strcpy(str, s);
}
//拷贝构造
myString(myString &other)
{
size = strlen(other.str);
str = new char[size+1];
strcpy(str,other.str);
}
//析构函数
~myString()
{
free(str);
str = NULL;
cout<<"析构函数"<<endl;
}
//判空函数
bool empty()
{
if(0 == strlen(str))
{
return true;
}
else
{
return false;
}
}
//size函数
int size_t()
{
return size;
}
//c_str函数
char* c_str()
{
return str;
}
//at函数
char &at(int pos)
{
return str[pos];
}
void show()
{
cout << str << endl;
}
};
int main()
{
myString s1;//无参构造
s1.show();
cout << "----------------------" << endl;
myString s2("hello");//有参构造
s2.show();
cout << "----------------------" << endl;
myString s3(s2);//拷贝构造
s3.show();
cout << "----------------------" << endl;
if(s1.empty())//判空函数
{
cout<<"s1 empty"<<endl;
}else
{
cout<<"s1 not empty"<<endl;
}
cout << "----------------------" << endl;
if(s2.empty())//判空函数
{
cout<<"s2 empty"<<endl;
}else
{
cout<<"s2 not empty"<<endl;
}
cout << "----------------------" << endl;
cout<<"length of s2 = "<<s2.size_t()<<endl;//size函数
cout << "----------------------" << endl;
// cout<<s2.c_str()<<endl;//c_str函数
// printf("%s\n",s2);
printf("(C风格) s2 = %s\n",s2.c_str());
cout << "----------------------" << endl;
cout<<s3.at(1)<<endl;//at函数
cout<<s3.at(4)<<endl;
return 0;
}
04/20课后作业(C++)
于 2023-04-20 20:39:56 首次发布