C++:创建本地对象数组
C++: creating an array of local objects
如果我执行以下操作:
string* create_array(){
string* arr = new string[2];
string s = "hello";
string s2 = "world";
arr[0] = s;
arr[1] = s2;
return arr;
}
分配arr[0] = s
是创建s
的副本,然后将该副本放入arr[0]
指向的内存地址中吗? 还是使 arr[0] 引用本地堆栈变量 s
,在这种情况下,如果我使用从此函数调用返回的数组,arr[0]
将具有不可预测的行为?
谢谢
是 arr[0] = s 的赋值,正在复制 s
是的。
然后将该副本放入 arr[0] 指向的内存地址中?
不。 arr[0]
是一个string
,它不指向任何东西。(在内部,它可能在某处有一个char*
,但这在每个std::string
实例中都是唯一的,并且是一个实现细节,我添加此评论只是为了完整)
还是让 arr[0] 引用局部堆栈变量 s,在这种情况下,如果我使用从此函数返回的数组,调用 arr[0] 将具有不可预测的行为?
不,它复制了。
相关文章:
- 将对象数组的引用传递给函数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 类对象数组的问题会导致崩溃
- Arduino C++在构造函数中用参数声明对象数组
- 使用对象数组对 SFML 进行动画处理
- C++ 对象数组堆栈溢出
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何初始化对象数组?
- C++创建对象数组
- 在对象数组中搜索字符串并返回相应值的函数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 使用 C++ 创建对象数组
- 对象数组打印空白字符串
- 重载运算符 [] 用于从对象数组中给出特定索引
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组