gpt4 book ai didi

c++ - 符号在这里做什么?

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

我试图理解这部分代码,但遇到了一些我无法解释的事情:

template<unsigned ELEMENT_DIM, class SIM, unsigned SPACE_DIM>
void CellBasedSimulationArchiver<ELEMENT_DIM, SIM, SPACE_DIM>::Save(SIM* pSim)
{
// Do a bunch of stuff

boost::archive::text_oarchive* p_arch = arch_opener.GetCommonArchive();

// Archive the simulation (const-ness would be a pain here)
(*p_arch) & pSim; //<--------------- What is this?
}

此函数的要点是使用 boost 存档模拟状态,以便稍后重新加载并继续。我试图了解归档实际上是如何发生的,但带箭头的线让我感到困惑。在某些时候,实际的节省必须发生,我猜箭头就是它发生的地方。

boost 肯定有问题,但这条线到底是什么意思,& 又是什么意思?在这里做?这是某种引用吗?我看了some documentation它包含 <<运营商,但没有一个&

最佳答案

这里的符号是二进制&运算符(operator)。对于整数类型,这将是按位与运算符(就像 << 将是左移运算符),但是 boost::archive::text_oarchive不是整数类型。必须为此类定义一个运算符重载函数。因此,此运算符将调用该函数。

根据docs :

sa << x
sa & x

These expressions must perform exactly the same function. They append the value of x along with other information to sa. This other information is defined by the implementation of the archive. Typically this information is that which is required by a corresponding Loading Archive type to properly restore the value of x.

所以,(*p_arch) & pSim;附加 pSim进入p_arch指向的文件.

关于c++ - 符号在这里做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57405110/

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