{"id":82,"date":"2025-07-16T14:27:45","date_gmt":"2025-07-16T06:27:45","guid":{"rendered":"https:\/\/www.fishh.top\/?p=82"},"modified":"2025-07-16T14:27:45","modified_gmt":"2025-07-16T06:27:45","slug":"%e9%a1%b9%e7%9b%ae%ef%bc%9a%e5%ae%9e%e7%8e%b0%e8%87%aa%e5%ae%9a%e4%b9%89mystring%e7%b1%bb","status":"publish","type":"post","link":"https:\/\/www.fishh.top\/index.php\/2025\/07\/16\/%e9%a1%b9%e7%9b%ae%ef%bc%9a%e5%ae%9e%e7%8e%b0%e8%87%aa%e5%ae%9a%e4%b9%89mystring%e7%b1%bb\/","title":{"rendered":"\u9879\u76ee\uff1a\u5b9e\u73b0\u81ea\u5b9a\u4e49MyString\u7c7b"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>#include &lt;iostream>\n#include &lt;cstring>\n\nclass MyString {\nprivate:\n    char* data;  \/\/ \u52a8\u6001\u5206\u914d\u7684\u5b57\u7b26\u6570\u7ec4\npublic:\n    \/\/ \u9ed8\u8ba4\u6784\u9020\u51fd\u6570\n    MyString() : data(nullptr) {}\n\n    \/\/ \u6709\u53c2\u6784\u9020\u51fd\u6570\n    MyString(const char* str) {\n        if (str) {\n            data = new char&#91;strlen(str) + 1]; \/\/ +1 for the null terminator\n            strcpy(data, str);\n        } else {\n            data = nullptr;\n        }\n    }\n\n    \/\/ \u62f7\u8d1d\u6784\u9020\u51fd\u6570\n    MyString(const MyString&amp; other) {\n        if (other.data) {\n            data = new char&#91;strlen(other.data) + 1];\n            strcpy(data, other.data);\n        } else {\n            data = nullptr;\n        }\n    }\n\n    \/\/ \u8d4b\u503c\u8fd0\u7b97\u7b26\u91cd\u8f7d\n    MyString&amp; operator=(const MyString&amp; other) {\n        if (this != &amp;other) {\n            delete&#91;] data; \/\/ \u91ca\u653e\u539f\u6709\u5185\u5b58\n            if (other.data) {\n                data = new char&#91;strlen(other.data) + 1];\n                strcpy(data, other.data);\n            } else {\n                data = nullptr;\n            }\n        }\n        return *this;\n    }\n\n    \/\/ \u6bd4\u8f83\u8fd0\u7b97\u7b26\u91cd\u8f7d\n    bool operator==(const MyString&amp; other) const {\n        if (data == nullptr &amp;&amp; other.data == nullptr) return true;\n        if (data == nullptr || other.data == nullptr) return false;\n        return strcmp(data, other.data) == 0;\n    }\n\n    \/\/ \u8f93\u51fa\u8fd0\u7b97\u7b26\u91cd\u8f7d\n    friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const MyString&amp; myStr) {\n        if (myStr.data) {\n            os &lt;&lt; myStr.data;\n        }\n        return os;\n    }\n\n    \/\/ \u6790\u6784\u51fd\u6570\n    ~MyString() {\n        delete&#91;] data; \/\/ \u91ca\u653e\u52a8\u6001\u5206\u914d\u7684\u5185\u5b58\n    }\n};\n\nint main() {\n    MyString str1(\"Hello, World!\");\n    MyString str2 = str1; \/\/ \u62f7\u8d1d\u6784\u9020\n    MyString str3;\n\n    str3 = str1; \/\/ \u8d4b\u503c\u8fd0\u7b97\u7b26\u91cd\u8f7d\n\n    std::cout &lt;&lt; \"str1: \" &lt;&lt; str1 &lt;&lt; std::endl;\n    std::cout &lt;&lt; \"str2: \" &lt;&lt; str2 &lt;&lt; std::endl;\n    std::cout &lt;&lt; \"str3: \" &lt;&lt; str3 &lt;&lt; std::endl;\n\n    if (str1 == str2) {\n        std::cout &lt;&lt; \"str1 and str2 are equal.\" &lt;&lt; std::endl;\n    } else {\n        std::cout &lt;&lt; \"str1 and str2 are not equal.\" &lt;&lt; std::endl;\n    }\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"lNQSf\">\u4ee3\u7801\u8bf4\u660e<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u79c1\u6709\u6210\u5458<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>char* data<\/code>\uff1a\u6307\u5411\u52a8\u6001\u5206\u914d\u7684\u5b57\u7b26\u6570\u7ec4\uff0c\u7528\u4e8e\u5b58\u50a8\u5b57\u7b26\u4e32\u3002<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u6784\u9020\u51fd\u6570<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9ed8\u8ba4\u6784\u9020\u51fd\u6570<\/strong>\uff1a\u521d\u59cb\u5316 <code>data<\/code> \u4e3a <code>nullptr<\/code>\u3002<\/li>\n\n\n\n<li><strong>\u6709\u53c2\u6784\u9020\u51fd\u6570<\/strong>\uff1a\u63a5\u6536\u4e00\u4e2a <code>const char*<\/code> \u7c7b\u578b\u7684\u5b57\u7b26\u4e32\uff0c\u52a8\u6001\u5206\u914d\u5185\u5b58\u5e76\u590d\u5236\u5b57\u7b26\u4e32\u5185\u5bb9\u3002<\/li>\n\n\n\n<li><strong>\u62f7\u8d1d\u6784\u9020\u51fd\u6570<\/strong>\uff1a\u590d\u5236\u53e6\u4e00\u4e2a <code>MyString<\/code> \u5bf9\u8c61\u7684\u5185\u5bb9\uff0c\u786e\u4fdd\u6df1\u62f7\u8d1d\u3002<\/li>\n<\/ul>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u8d4b\u503c\u8fd0\u7b97\u7b26\u91cd\u8f7d<\/strong>\uff1a\u652f\u6301\u5c06\u4e00\u4e2a <code>MyString<\/code> \u5bf9\u8c61\u8d4b\u503c\u7ed9\u53e6\u4e00\u4e2a\uff0c\u786e\u4fdd\u91ca\u653e\u539f\u6709\u5185\u5b58\u5e76\u8fdb\u884c\u6df1\u62f7\u8d1d\u3002<\/li>\n\n\n\n<li><strong>\u6bd4\u8f83\u8fd0\u7b97\u7b26\u91cd\u8f7d<\/strong>\uff1a\u652f\u6301\u6bd4\u8f83\u4e24\u4e2a <code>MyString<\/code> \u5bf9\u8c61\u662f\u5426\u76f8\u7b49\u3002<\/li>\n\n\n\n<li><strong>\u8f93\u51fa\u8fd0\u7b97\u7b26\u91cd\u8f7d<\/strong>\uff1a\u652f\u6301\u76f4\u63a5\u4f7f\u7528 <code>std::cout<\/code> \u8f93\u51fa <code>MyString<\/code> \u5bf9\u8c61\u3002<\/li>\n\n\n\n<li><strong>\u6790\u6784\u51fd\u6570<\/strong>\uff1a\u91ca\u653e\u52a8\u6001\u5206\u914d\u7684\u5185\u5b58\uff0c\u9632\u6b62\u5185\u5b58\u6cc4\u6f0f\u3002<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u4ee3\u7801\u8bf4\u660e<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-82","post","type-post","status-publish","format-standard","hentry","category-1"],"_links":{"self":[{"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/posts\/82","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/comments?post=82"}],"version-history":[{"count":1,"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/posts\/82\/revisions"}],"predecessor-version":[{"id":83,"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/posts\/82\/revisions\/83"}],"wp:attachment":[{"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/media?parent=82"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/categories?post=82"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fishh.top\/index.php\/wp-json\/wp\/v2\/tags?post=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}