【发布时间】:2021-01-05 03:28:28
【问题描述】:
我正在尝试在下面的代码 sn-p 中保存 char[10] 的副本,只是想知道这是否是使用 std::move 的正确方法,这实际上会保存 char[10] 的副本Struct2 对象正在构建中。
#include <string>
#include <iostream>
#include <cstring>
#include <memory>
using namespace std;
struct Struct1 {
int a;
string b;
char c[10];
};
struct Struct2 {
const Struct1 struct1;
int d;
string e;
};
int main() {
int a = 10;
auto b = "b";
char c[10] = "12345";
Struct1 struct1{a, b};
strcpy(struct1.c, c);
Struct2 str2{std::move(struct1), 10, "e"}; //<-- no copy of struct1.c, right?
cout << str2.struct1.c << endl;
}
如果我不想复制char[10] 两次(Struct1 将不会被用作Struct2 的字段以外的其他字段),那么在构造 Struct2 中是否有更好的语法?
【问题讨论】:
标签: c++ c++11 move-semantics