【问题标题】:Want to create own class String想创建自己的类 String
【发布时间】:2013-06-17 18:43:09
【问题描述】:

我正在用 C++ 创建一个自己的字符串类。

我对此有疑问:

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;
        }
}

我主要有这个:

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

问题是编译器向我显示了这个:

总线错误:10

我正在使用带有 g++ 的终端。

我该如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: c++ string class pointers attributes


    【解决方案1】:

    这个:

    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 中工作,还提供移动构造函数和移动赋值运算符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      相关资源
      最近更新 更多