#include<iostream>
#include<cstring>
class MyString{
private:
char *str;
int len;
public:
MyString(){
str = nullptr;
len = 0;
}//构造函数
MyString(const char *s){
len = strlen(s);
str = new char[len+1];
strcpy(str,s);
}//有参构造函数
~MyString(){
if(nullptr != str){
delete []str;
str = nullptr;
}
}//析构函数
MyString(const MyString& other):len(other.len),str(new char[other.len+1]){
strcpy(str,other.str);
}//拷贝构造函数
MyString& operator=(const MyString& other){
if(&other != this){
len = other.len;
if(nullptr != str){
delete []str;
str = nullptr;
}
str = new char[len+1];
strcpy(str,other.str);
}
return *this;
}//拷贝赋值函数
const char* c_str() const{
return str;
}
int size() const{
return len;
}
bool empty() const{
return len == 0;
}
int at(int index) const{
if(index < 0 || index >= len){
throw std::out_of_range("索引越界");
}
return str[index];
}
};
int main(int argc, const char *argv[])
{
MyString s("Hello");
std::cout << s.c_str() << std::endl;
std::cout << s.size() << std::endl;
std::cout << s.empty() << std::endl;
MyString text = "ABCDEF";
char ch = text.at(2);
std::cout << ch << std::endl;
return 0;
}
C++9/2作业:自行实现一个Mystring类
于 2024-09-03 01:35:15 首次发布