<small id='JiLHp'></small><noframes id='JiLHp'>

  • <legend id='JiLHp'><style id='JiLHp'><dir id='JiLHp'><q id='JiLHp'></q></dir></style></legend>
      <i id='JiLHp'><tr id='JiLHp'><dt id='JiLHp'><q id='JiLHp'><span id='JiLHp'><b id='JiLHp'><form id='JiLHp'><ins id='JiLHp'></ins><ul id='JiLHp'></ul><sub id='JiLHp'></sub></form><legend id='JiLHp'></legend><bdo id='JiLHp'><pre id='JiLHp'><center id='JiLHp'></center></pre></bdo></b><th id='JiLHp'></th></span></q></dt></tr></i><div id='JiLHp'><tfoot id='JiLHp'></tfoot><dl id='JiLHp'><fieldset id='JiLHp'></fieldset></dl></div>

      <tfoot id='JiLHp'></tfoot>
      • <bdo id='JiLHp'></bdo><ul id='JiLHp'></ul>

      1. 什么是悬空引用?

        What is a dangling reference?(什么是悬空引用?)
          <tbody id='YfWih'></tbody>

        <legend id='YfWih'><style id='YfWih'><dir id='YfWih'><q id='YfWih'></q></dir></style></legend>

          • <tfoot id='YfWih'></tfoot>
          • <i id='YfWih'><tr id='YfWih'><dt id='YfWih'><q id='YfWih'><span id='YfWih'><b id='YfWih'><form id='YfWih'><ins id='YfWih'></ins><ul id='YfWih'></ul><sub id='YfWih'></sub></form><legend id='YfWih'></legend><bdo id='YfWih'><pre id='YfWih'><center id='YfWih'></center></pre></bdo></b><th id='YfWih'></th></span></q></dt></tr></i><div id='YfWih'><tfoot id='YfWih'></tfoot><dl id='YfWih'><fieldset id='YfWih'></fieldset></dl></div>

                • <bdo id='YfWih'></bdo><ul id='YfWih'></ul>

                  <small id='YfWih'></small><noframes id='YfWih'>

                  本文介绍了什么是悬空引用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  以下程序给我运行时错误(Segmentation Fault (SIGSEGV)).

                  Following program give me runtime error(Segmentation Fault (SIGSEGV)).

                  #include <iostream>
                  using namespace std;
                  
                  int& bar()
                  {
                      int n = 10;
                      return n;
                  }
                  
                  int main() {
                      int& i = bar();
                      cout<<i<<endl;
                      return 0;
                  }
                  

                  我的老师告诉我这是一个未定义的行为,因为悬空引用.他说得对吗?如果是,那么如何避免它?

                  My teacher told me it is a undefined behavior because dangling reference. Is he right? If yes then how to avoid it?

                  推荐答案

                  是的,这确实是一个未定义的行为,因为您正在返回对自动变量的引用,该变量将在执行 bar() 时被销毁完成

                  Yes it is indeed an undefined behavior because you are returning a reference to automatic variable which will be destroyed when execution of bar() completes

                  你可以通过写来避免它:

                  You can avoid it by writing:

                  #include <iostream>
                  using namespace std;
                  
                  int& bar()
                  {
                      static int n = 10;
                      return n;
                  }
                  
                  int main() {
                      int& i = bar();
                      cout<<i<<endl;
                      return 0;
                  }
                  

                  在这种情况下,静态变量 nbar() 执行完成时不会被销毁,它会在您的程序终止时被销毁.

                  In this case static variable n will not be destroyed when execution of bar() completes, it will be destroyed when your program terminates.

                  这篇关于什么是悬空引用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Unable to access non-const member functions of objects in C++ std::set(无法访问 C++ std::set 中对象的非常量成员函数)
                  Constructing std::function argument from lambda(从 lambda 构造 std::function 参数)
                  STL BigInt class implementation(STL BigInt 类实现)
                  Sync is unreliable using std::atomic and std::condition_variable(使用 std::atomic 和 std::condition_variable 同步不可靠)
                  Move list element to the end in STL(在 STL 中将列表元素移动到末尾)
                  Why is overloading operatoramp;() prohibited for classes stored in STL containers?(为什么禁止对存储在 STL 容器中的类重载 operatoramp;()?)

                    <tfoot id='nZhp1'></tfoot>

                    <i id='nZhp1'><tr id='nZhp1'><dt id='nZhp1'><q id='nZhp1'><span id='nZhp1'><b id='nZhp1'><form id='nZhp1'><ins id='nZhp1'></ins><ul id='nZhp1'></ul><sub id='nZhp1'></sub></form><legend id='nZhp1'></legend><bdo id='nZhp1'><pre id='nZhp1'><center id='nZhp1'></center></pre></bdo></b><th id='nZhp1'></th></span></q></dt></tr></i><div id='nZhp1'><tfoot id='nZhp1'></tfoot><dl id='nZhp1'><fieldset id='nZhp1'></fieldset></dl></div>

                        <small id='nZhp1'></small><noframes id='nZhp1'>

                        • <bdo id='nZhp1'></bdo><ul id='nZhp1'></ul>
                            <tbody id='nZhp1'></tbody>
                          <legend id='nZhp1'><style id='nZhp1'><dir id='nZhp1'><q id='nZhp1'></q></dir></style></legend>