gpt4 book ai didi

c++ - 使用 block 在 C++ 中避免在初始化期间复制变量

转载 作者:行者123 更新时间:2023-11-30 03:08:24 25 4
gpt4 key购买 nike

请看这段代码。 C++ 具有 Clangblock 特性。这段代码可以避免复制吗?请让我知道你的意见。这只是一种避免堆的做法。

class   Element
{
public:

int value[1024]; // Here is a large entity.

Element()
{
}
};
class World
{
public:

Element a;
Element b;

inline World(Element& newA, Element& newB)
{
a = newA; // Source of newA is stored in somewhere, this copies whole Element during assignment.
b = newB;
}
inline World(void(^init)(Element& a, Element& b))
{
init(a, b); // Assignment is done without copying whole Element.
}
};

最佳答案

完全避免复制的唯一方法是使用指针或引用。例如:

class   World
{
public:

Element& a;
Element& b;

inline World(Element& newA, Element& newB) : a(newA), b(newB)
{
}

...
};

与任何其他引用或指针一样,此方法要求传递的变量不超出范围。

关于c++ - 使用 block 在 C++ 中避免在初始化期间复制变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5038751/

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