【无标题】

作业
仿照string类,写一个my_string类
1 class my_string
2 {
3 private :
4 char * str ;
5 int len ;
6 publuc :
7 // 无参构造
8 // 有参构造 9 // 拷贝构造
10 // 拷贝赋值
11 //bool my_empty() 判空
12 //int my_size() 求长度
13 //char *my_str() 转化为 c 风格字符串
14 }
15 要求:前四个必须实现,后三个尽力而为
#include <iostream>
#include <string>
using namespace std;
 
class my_string
{
private:
    char *str;
    int len;
 
public:
     my_string() {}   //无参构造
     ~my_string(){}   //析构函数
 
     my_string(char c,int i)    //有参函数
     {
         this->str = new char[1];
           for(int i=0;i<1;i++)
           {
               str[1]=c;
           }
           str[1]=0;
           this->len=1;
        }
     //拷贝构造
    my_string(const my_string& other)
    {
        this->len=other.len;
        str = new char[other.len+1];
        for(int i=0;i<other.len+1;i++)
        {
            str[i]=*(other.str+i);
        }
    }
 
//拷贝赋值
    //拷贝赋值
        my_string & operator=(const my_string & other)
        {
            delete this->str;
 
            this->len=other.len;
            str = new char[other.len+1];
            for(int i=0;i<other.len+1;i++)
            {
                str[i]=*(other.str+i);
            }
            return *this;
        }
        //bool my_empty() 判空
        bool my_empty()
        {
            if(len==0)
                return true;
            else
                return false;
        }
        //int my_size() 求长度
        int my_size()
        {
            return len;
        }
        //char *my_str() 转化为c风格字符串
        char *my_str()
        {
            return str;
        }
    };
 
int main()
{
    //验证有参构造
    my_string str1("Hello World!");
    cout<<"str1:"<<str1.my_str()<<endl;
    my_string str2(10,'h');
    cout<<"str2:"<<str2.my_str()<<endl;
 
    //验证拷贝构造
    my_string str3=str1;
    cout<<"str3"<<str3.my_str()<<endl;
 
    //验证赋值构造
    my_string str4;
    str4=str3;
    //验证判空
    my_string str5("");
    if(str5.my_empty())
        cout<<"str5空"<<endl;
    else
        cout<<"str5非空"<<endl;
 
    if(str4.my_empty())
        cout<<"str4空"<<endl;
    else
        cout<<"str4非空"<<endl;
    //获取长度
    int len=str1.my_size();
    cout<<"str1长度为:"<<len<<endl;
 
 
 
    return 0;
}

                

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...