C++自定义字符串类实现及操作

需积分: 9 2 下载量 145 浏览量 更新于2024-09-24 收藏 980B TXT 举报
"这篇C++代码示例展示了如何创建一个简单的自定义字符串类`MyString`,该类具有构造函数、复制构造函数以及一个友元函数用于字符串拼接。" 在C++编程语言中,自定义数据类型是常见的实践,这通常通过创建类来实现。在给定的代码中,我们看到一个名为`MyString`的类,它是对标准C++`string`类的一个简化版本。`MyString`类包含以下功能: 1. 默认构造函数:`MyString(){}` - 这个函数没有参数,创建一个空的`MyString`对象。 2. 字符数组构造函数:`MyString(char a[100])` - 用一个字符数组初始化`MyString`对象。它将数组的首地址赋值给成员变量`s`,`s`是一个指向字符的指针。 3. 拷贝构造函数:`MyString(const MyString &p)` - 当一个`MyString`对象被另一个已存在的`MyString`对象初始化时调用。这个构造函数负责深拷贝`p`的`s`,确保不会共享内存。 4. `set_str`函数:`void set_str(char a[100])` - 设置`MyString`对象的值为给定的字符数组。 5. `disp`函数:`void disp() { cout << s << endl; }` - 输出`MyString`对象的值。 6. 友元函数`add`:`char *add(MyString p1, MyString p2)` - 将两个`MyString`对象拼接成一个新的字符串,并返回结果的字符数组。这个函数不是`MyString`类的一部分,但可以访问类的私有成员,因为它被声明为`friend`。 在`main`函数中,我们看到`MyString`类的实例被创建并使用,例如创建`p1`, `p2`, 和 `p3`,并使用`disp`显示它们的值。`add`函数被用来拼接字符串,并更新`p3`的值。这个程序演示了基本的面向对象编程概念,如构造函数、对象创建、成员函数和友元函数的使用。 此外,这段代码还涉及C++的动态内存管理,`new`和`delete`关键字用于分配和释放字符数组的内存。在`add`函数中,使用`new`为拼接后的字符串分配内存,然后用`strcpy`和`strcat`函数来复制和连接字符串。 这段代码是对C++中的类、构造函数、复制构造函数、成员函数、友元函数以及动态内存管理的一个基础练习。它可以帮助开发者复习和巩固这些核心概念。