我有以下代码:
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/