C ++按值传递时对参数的修改

时间:2019-05-24 19:12:22

标签: c++ pass-by-value

我有一个按值接受参数的函数,但是由于某种原因,在调用此函数后,按值传递的参数与调用之前的值不同。我没有一个可重现的小示例,可以在这里发布,所以我的问题很笼统:是否存在一种情况,即按值将对象传递给函数会导致该对象发生突变?

如果我通过const ref传递此数据类型,则不会发生突变。这与具有数组成员的联合有关吗?我怀疑是复制构造函数与std :: arrays的交互,或者在此过程中某处调用了某些移动构造函数。

union uint128_union
{

    uint128_union (uint128_union const &) = default;

    std::array<uint8_t, 16> bytes;
    std::array<char, 16> chars;
    std::array<uint32_t, 4> dwords;
    std::array<uint64_t, 2> qwords;
};

//function that is mutating the value. Before I call this function,
//amount is non-zero. After, amount is zero
void func(uint128_union amount);



具体来说,该突变似乎将传入的值设置为0。

0 个答案:

没有答案