请查看此代码。具有C++
Clang
功能的block
。
这段代码可以避免复制吗?请让我知道你的意见。
这只是避免堆的做法。
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.
}
};
答案 0 :(得分:3)
完全避免复制的唯一方法是使用指针或引用。例如:
class World
{
public:
Element& a;
Element& b;
inline World(Element& newA, Element& newB) : a(newA), b(newB)
{
}
...
};
与任何其他引用或指针一样,此方法要求传递的变量不会超出范围。