c++ - 函数返回静态变量 C++

标签 c++ static

我无法理解为什么下面的程序会出错:

 int& getID(){
   static int r = 0;
   return r++;
 }

主要内容:

 int main(){
   int a = getID();
   std::cout << "a=" << a << std::endl;
   return 0;
 }

为什么按照描述返回静态变量会产生问题而不返回 想要的值(value)?

最佳答案

您正在使用后增量(r++ 而不是++r)。后增量的结果是一个临时的,你正试图返回对该临时的引用。你不能那样做。如果你想返回对 r 的引用,那么你可以使用预递增,或者你可以只做递增,然后在单独的语句中返回 r。

关于c++ - 函数返回静态变量 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9241540/

相关文章:

C++无法连接两个对象

java - 放入静态 map 时的非静态变量 this

c# - 为什么静态字段初始化发生在静态构造函数之前?

c - 实际输出是什么,为什么?

java - 接口(interface)中的静态方法不起作用,如何从多个枚举中获取特定的枚举值?

c++ - OpenGL中的顺时针和逆时针

c++ - 全局对象中的 "term does not evaluate to a function taking ..."

c++ - 为什么无限循环?

c++ - CLion 添加依赖 header 和源

asp.net - 将静态内容从 ASP.NET 项目迁移到 Windows Azure 平台