C++ String 类实现源码示例 - 详细解析
{///'title///': ///'C++ String 类实现源码示例 - 详细解析///', ///'description///': ///'本文提供了一个简单的 C++ String 类实现源码示例,解释了构造函数、析构函数、赋值运算符重载、拼接运算符重载和相等运算符重载等基本操作。并详细分析了代码实现,帮助您理解 C++ 中字符串类的基本原理。///', ///'keywords///': ///'C++, String 类, 源码, 实现, 字符串, 构造函数, 析构函数, 赋值运算符, 拼接运算符, 相等运算符///', ///'content///': ///'以下是一个简单的 C++ String类的实现源码示例:////n////ncpp////n#include <iostream>////n////nclass String {////nprivate:////n char* m_data;////n int m_length;////n////npublic:////n String() {////n m_data = nullptr;////n m_length = 0;////n }////n////n String(const char* data) {////n m_length = strlen(data);////n m_data = new char[m_length + 1];////n strcpy(m_data, data);////n }////n////n String(const String& other) {////n m_length = other.m_length;////n m_data = new char[m_length + 1];////n strcpy(m_data, other.m_data);////n }////n////n ~String() {////n delete[] m_data;////n }////n////n int length() const {////n return m_length;////n }////n////n const char* c_str() const {////n return m_data;////n }////n////n String& operator=(const String& other) {////n if (this != &other) {////n delete[] m_data;////n m_length = other.m_length;////n m_data = new char[m_length + 1];////n strcpy(m_data, other.m_data);////n }////n return *this;////n }////n////n String operator+(const String& other) const {////n String result;////n result.m_length = m_length + other.m_length;////n result.m_data = new char[result.m_length + 1];////n strcpy(result.m_data, m_data);////n strcat(result.m_data, other.m_data);////n return result;////n }////n////n bool operator==(const String& other) const {////n return (strcmp(m_data, other.m_data) == 0);////n }////n};////n////nint main() {////n String s1 = ///'Hello///';////n String s2 = ///' World///';////n String s3 = s1 + s2;////n////n std::cout << ///'s1: ///' << s1.c_str() << std::endl;////n std::cout << ///'s2: ///' << s2.c_str() << std::endl;////n std::cout << ///'s3: ///' << s3.c_str() << std::endl;////n////n if (s1 == s2) {////n std::cout << ///'s1 and s2 are equal///' << std::endl;////n } else {////n std::cout << ///'s1 and s2 are not equal///' << std::endl;////n }////n////n return 0;////n}////n////n////n这个String类实现了字符串的基本操作,包括构造函数、析构函数、赋值运算符重载、拼接运算符重载和相等运算符重载。它使用动态分配的字符数组来存储字符串,并提供了获取字符串长度和以C风格字符串的形式返回字符串的方法。///
原文地址: https://www.cveoy.top/t/topic/pyZK 著作权归作者所有。请勿转载和采集!