gpt4 book ai didi

c++ - 返回对/结构/元组时参数的顺序在下面的代码中重要吗?

转载 作者:行者123 更新时间:2023-12-03 07:09:06 26 4
gpt4 key购买 nike

在以下代码中,正确创建了返回值。我有一些疑问,因为对构造函数的两个参数都相关。第二个参数使用move是否会破坏第一个参数。或者,如果始终在第二个参数之前创建第一个参数:

class A
{
private:
struct B
{
int a;
string b;
int c;
};

struct C
{
double d;
float f;
};

struct Key
{
int a;
string b;
double d;
};

struct Data
{
B x;
C y;
};

public:
Data data;

using ReturnType = pair<Key, Data>;
ReturnType operator()(Source input)
{
// use input to fill Data

return {{data.x.a, data.x.b, data.y.d}, move(this->data)};
}
};
注意:源可以是数据库游标,标准输入流,也可以是包含相关数据的文件指针。
c++标准是否定义了创建对的顺序。在这方面,c++ 11和c++ 17之间是否有任何区别。

最佳答案

this evaluation order reference:

  1. In list-initialization, every value computation and side effect of a given initializer clause is sequenced before every value computation and side effect associated with any initializer clause that follows it in the brace-enclosed comma-separated list of initalizers.

它的意思是在表达中
{{data.x.a, data.x.b, data.y.d}, move(this->data)}
{data.x.a, data.x.b, data.y.d}部分将在 move(this->data)之前排序(即先评估)。

关于c++ - 返回对/结构/元组时参数的顺序在下面的代码中重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63879483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com