想要创建自己的类String

Want to create own class String

本文关键字:String 自己的 创建      更新时间:2023-10-16

我在c++中创建了一个自己的类String。

我有一个问题:

class String {
    char* arr;
    int len;
    friend ostream& operator << (ostream& s, const String& c) {
        return s << c.arr;
    }
    Public:
        String() {
            arr = NULL;
            len = 0;
        }
        String(const char* name) {
            *arr = *name;
        }
}

在main中,我有这个:

String *s = new String("abcde"); 
    cout << *s << endl;

问题是编译器告诉我这个:

总线错误:10

我在mac上工作,使用g++的终端。

我该如何解决这个问题?

This:

String(const char* name) {
    *arr = *name;
//  ^^^^
}

正在解引用一个未初始化的指针,从而给出未定义的行为。我猜你真正想做的是这样的:

#include <cstring> // For strlen() and strcpy()
String(const char* name) {
    len = strlen(name);
    arr = new char[len + 1];
    strcpy(arr, name);
}

另外,不要忘记提供用于清理的析构函数、复制构造函数和复制赋值操作符——如果在c++ 11中工作,还应提供移动构造函数和移动赋值操作符。