自定义实现string类

myString.h: 

#include 
using namespace std;

#ifndef MYSTRING_H
#define MYSTRING_H

class MyString
{
public:
//构造函数
    MyString(const char* str = NULL);
//拷贝构造函数
    MyString(const MyString& str);
//析构函数
    ~MyString();
//运算符重载=、+
    MyString& operator=(const MyString& str);
    // MyString& operator+(string str);
//返回数据
    char* data() const;

private:
    char* _data;
    int len;
};

#endif

myString.cpp

#include "myString.h"

//构造函数
MyString::MyString(const char* str)
{
    if (str == NULL)
    {
        _data = new char[1];
        _data[0] = '\0';
        len = 1;
    }
    else
    {  
        len = strlen(str);
        _data = new char[len + 1];
        strcpy(_data, str);
    }
}
//拷贝构造函数
MyString::MyString(const MyString& str)
{
    len = str.len;
    _data = new char[len + 1];
    strcpy(_data, str.data());
}
//析构函数
MyString::~MyString()
{
    delete[] _data;
}
//运算符重载
MyString& MyString::operator=(const MyString& str)
{
    if (this != &str)
    {
        delete[] _data;
        len = strlen(str.data());
        _data = new char[len + 1];
        strcpy(_data, str.data());
    }
    return *this;
}
//返回数据
char* MyString::data() const
{
    return _data;
}

main.cpp

#include 
#include "myString.h"
using namespace std;


int main()
{
    cout << "test mystring..." << endl;
    cout << (unsigned char)12 << endl;
    MyString str1("abc");
    MyString str2;
    str2 = str1;
    cout << str1.data() << endl;
    cout << str2.data() << endl;

    return 0;
}

 

你可能感兴趣的:(C++)