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 ++的终端工作.
我怎么解决这个问题?
提前致谢.
这个:
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中工作,还需要移动构造函数和移动赋值运算符.