c++ 参数地址传递问题


BundleInfo baseBundleInfo_;
void InnerBundleInfo::GetBundleInfo(const BundleFlag flag, BundleInfo &bundleInfo) const
{
    bundleInfo = baseBundleInfo_;
    bundleInfo.mainEntry = info.second.modulePackage;
}

BundleInfo bundleInfo;
mInnerBundleInfo->GetBundleInfo(1, bundleInfo);

请问这个操作是什么意思,会同时修改bundleInfo和baseBundleInfo_的值吗?请详细说明。

只会修改bundleInfo
因为你函数声明的是按引用传递
即BundleInfo &bundleInfo是BundleInfo bundleInfo的别名,并不是指针传递

举个例子

void swap(int &x,int &y)
{
    int t=x;
    x=y;
    y=y;
}

此时你假设已经声明2个整形变量名为x和y
那么想要互换它只需要
swap(x,y);
就行了,而不是
swap(&x,&y);