想要创建自己的类String

Gan*_*ira 2 c++ string attributes pointers class

我在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;
        }
}
Run Code Online (Sandbox Code Playgroud)

主要是我有这个:

String *s = new String("abcde"); 
    cout << *s << endl;
Run Code Online (Sandbox Code Playgroud)

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

总线错误:10

我正在使用带有g ++的终端工作.

我怎么解决这个问题?

提前致谢.

And*_*owl 6

这个:

String(const char* name) {
    *arr = *name;
//  ^^^^
}
Run Code Online (Sandbox Code Playgroud)

是取消引用未初始化的指针,从而为您提供未定义的行为.我想你真正想要做的是这样的事情:

#include <cstring> // For strlen() and strcpy()

String(const char* name) {
    len = strlen(name);
    arr = new char[len + 1];
    strcpy(arr, name);
}
Run Code Online (Sandbox Code Playgroud)

另外,不要忘记为清理提供析构函数,复制构造函数和复制赋值运算符 - 如果在C++ 11中工作,还需要移动构造函数和移动赋值运算符.