想要创建自己的类String
Want to create own class String
我在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中工作,还应提供移动构造函数和移动赋值操作符。
相关文章:
- 没有为自己的结构调用列表推回方法
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- C++从对象自己的类中删除对象
- 使用 std::optional,而不是自己的结构
- 子轴围绕父轴而不是他自己的轴旋转
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- C++ 如何为自己的迭代器类从迭代器转换为const_iterator?
- 重载 + 自己的类和 std::string 的运算符
- 类无法访问自己的私有静态 constexpr 方法 - Clang bug?
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 如何访问模板参数自己的模板参数?
- 将矩阵乘以我自己的输入的向量
- 将自己的迭代器与 std::string 一起使用
- 将一个常量cstring附加到我自己的String类对象
- 自己的 std::string::find (暴力搜索)实现
- 编写我自己的字符串类"reference to ‘string’ is ambiguous"但出现编译错误
- 用C++11对自己的String类型进行哈希
- 想要创建自己的类String
- 使用我自己的String类和<<操作符