C++:创建本地对象数组

C++: creating an array of local objects

本文关键字:对象 数组 创建 C++      更新时间:2023-10-16

如果我执行以下操作:

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] 将具有不可预测的行为?

不,它复制了。