以下是一个简单的C++ String类的实现源码示例:

#include <iostream>

class String {
private:
    char* m_data;
    int m_length;

public:
    String() {
        m_data = nullptr;
        m_length = 0;
    }

    String(const char* data) {
        m_length = strlen(data);
        m_data = new char[m_length + 1];
        strcpy(m_data, data);
    }

    String(const String& other) {
        m_length = other.m_length;
        m_data = new char[m_length + 1];
        strcpy(m_data, other.m_data);
    }

    ~String() {
        delete[] m_data;
    }

    int length() const {
        return m_length;
    }

    const char* c_str() const {
        return m_data;
    }

    String& operator=(const String& other) {
        if (this != &other) {
            delete[] m_data;
            m_length = other.m_length;
            m_data = new char[m_length + 1];
            strcpy(m_data, other.m_data);
        }
        return *this;
    }

    String operator+(const String& other) const {
        String result;
        result.m_length = m_length + other.m_length;
        result.m_data = new char[result.m_length + 1];
        strcpy(result.m_data, m_data);
        strcat(result.m_data, other.m_data);
        return result;
    }

    bool operator==(const String& other) const {
        return (strcmp(m_data, other.m_data) == 0);
    }
};

int main() {
    String s1 = "Hello";
    String s2 = " World";
    String s3 = s1 + s2;

    std::cout << "s1: " << s1.c_str() << std::endl;
    std::cout << "s2: " << s2.c_str() << std::endl;
    std::cout << "s3: " << s3.c_str() << std::endl;

    if (s1 == s2) {
        std::cout << "s1 and s2 are equal" << std::endl;
    } else {
        std::cout << "s1 and s2 are not equal" << std::endl;
    }

    return 0;
}

这个String类实现了字符串的基本操作,包括构造函数、析构函数、赋值运算符重载、拼接运算符重载和相等运算符重载。它使用动态分配的字符数组来存储字符串,并提供了获取字符串长度和以C风格字符串的形式返回字符串的方法


原文地址: https://www.cveoy.top/t/topic/hPSL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录