gpt4 book ai didi

c++ - 将引用分配给引用是有效操作吗?

转载 作者:太空狗 更新时间:2023-10-29 20:16:30 25 4
gpt4 key购买 nike

我有以下代码:

void cStatisticDBSerializer::GetStats (std::map <std::string, long long >& ioCounterStats,
std::map <std::string, long long >& ioGaugeStats,
bool iSwitch)
{
// Before getting the stats, clear the containers
ioCounterStats.clear ();
ioGaugeStats.clear ();

std::map <std::string, long long >& lStats = ioCounterStats;

if (iSwitch)
{
lStats = ioGaugeStats;
}

// Do something with lStats
}

问题是:将函数输入引用分配给局部变量 lStats 是否有效?出于某种原因,这编译得很好,但没有按预期运行。但是,如果我将 lStats 更改为指针并将其分配如下(例如):

std::map <std::string, long long >* lpStats = &ioCounterStats;

它工作得很好。

有人能解释一下这里发生了什么吗?谢谢!

最佳答案

引用一旦创建就无法重新分配。相反,每次使用它都会“引用”原始分配。你的第一个例子相当于:

ioCounterStats /*lStats*/ = ioGaugeStats;

关于c++ - 将引用分配给引用是有效操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419425/

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