hwaityd的小窝

Loading...

下面是使用C++实现的一个简单的String类,包括私有成员std::string s用于存储字符串数据,以及构造函数、拷贝构造函数、析构函数和赋值函数。此外,我还添加了一个命名空间MyNamespace来组织这个类。

#include <iostream>
#include <cstring>

namespace MyNamespace {
    class String {
    private:
        std::string s;  // 用于存储字符串的私有成员

    public:
        // 构造函数
        String(const char* str) : s(str) {}

        // 拷贝构造函数
        String(const String& other) : s(other.s) {}

        // 析构函数
        ~String() {
            // std::string的析构函数会自动清理资源
        }

        // 赋值函数
        String& operator=(const String& other) {
            if (this != &other) {
                s = other.s;
            }
            return *this;
        }

        // 为了演示,添加一个打印函数
        void print() const {
            std::cout << s << std::endl;
        }
    };

    int main() {
        String str1("Hello, World!");
        str1.print();  // 输出: Hello, World!

        String str2 = str1;  // 调用拷贝构造函数
        str2.print();  // 输出: Hello, World!

        String str3("Kimi");
        str3 = str2;  // 调用赋值函数
        str3.print();  // 输出: Hello, World!

        return 0;
    }
}

在这个实现中:

  • 构造函数接收一个const char*类型的参数,并将其传递给std::string的构造函数。
  • 拷贝构造函数创建了一个新的String对象,它是现有对象的副本。
  • 析构函数目前没有执行任何特殊操作,因为std::string的析构函数会自动释放其管理的内存。
  • 赋值函数实现了深拷贝,并在必要时进行了自赋值检查。
  • print函数用于输出字符串内容,以验证我们的String类是否按预期工作。

请注意,这个简单的String类并没有实现std::string类的全部功能,但它展示了如何使用std::string来管理字符串数据,并提供了基本的构造、拷贝构造、析构和赋值操作。在实际应用中,直接使用标准库中的std::string通常是更好的选择,因为它经过了优化和广泛的测试。

posted on 2024-10-20 00:33  hwaityd  阅读(25)  评论(0)    收藏  举报