C++9/2作业:自行实现一个Mystring类

 #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;
 }
                              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值