当前位置:首页 C++ > 正文

c++string类的模拟实现:运算符重载

作者:野牛程序员:2024-01-03 14:28:28 C++阅读 2446

字符串类的模拟实现可以包括一系列常见的操作,例如构造函数、析构函数、赋值运算符重载、拷贝构造函数、加法运算符重载等。以下是一个简化版本的C++字符串类的模拟实现,包含了运算符重载:

#include <iostream>
#include <cstring>

class MyString {
private:
    char* str;

public:
    // 构造函数
    MyString(const char* s = nullptr) {
        if (s == nullptr) {
            str = new char[1];
            str[0] = '\\0';
        } else {
            str = new char[std::strlen(s) + 1];
            std::strcpy(str, s);
        }
    }

    // 析构函数
    ~MyString() {
        delete[] str;
    }

    // 拷贝构造函数
    MyString(const MyString& other) {
        str = new char[std::strlen(other.str) + 1];
        std::strcpy(str, other.str);
    }

    // 赋值运算符重载
    MyString& operator=(const MyString& other) {
        if (this != &other) {
            delete[] str;
            str = new char[std::strlen(other.str) + 1];
            std::strcpy(str, other.str);
        }
        return *this;
    }

    // 加法运算符重载
    MyString operator+(const MyString& other) const {
        MyString result;
        result.str = new char[std::strlen(str) + std::strlen(other.str) + 1];
        std::strcpy(result.str, str);
        std::strcat(result.str, other.str);
        return result;
    }

    // 输出运算符重载
    friend std::ostream& operator<<(std::ostream& os, const MyString& s) {
        os << s.str;
        return os;
    }
};

int main() {
    MyString s1("Hello");
    MyString s2("World");

    MyString s3 = s1 + s2;
    
    std::cout << s3 << std::endl;

    return 0;
}

在这个例子中,模拟实现了字符串类MyString,包括了构造函数、析构函数、拷贝构造函数、赋值运算符重载、加法运算符重载以及输出运算符重载。这个简单的实现可以用来执行基本的字符串操作。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击