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

标签 c++

我有以下代码:

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/

相关文章:

c++ - 在 C++ 中将对象 vector 保存到文件

c++ - 键比较的最佳方式(C++ 映射)

c++ - 来自 C++ boost 线程的 NSOpenPanel

c++ - SDL 无法通过 2.1 Mac OSX Yosemite 加载 OpenGL 上下文

c++ - 解决 C++ 中不明确的 this 指针

C++ 双重分派(dispatch)示例

c++ - 使用 SFML 验证实时网络上发送的数据包

python - 将参数传递给 QT Designer 构建的槽函数

C++从文件阅读器中的另一个类调用set函数

C++ 异步任务。包含 "Future"麻烦