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

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

      <tfoot id='csVYl'></tfoot>

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

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

      1. 对临时的常量引用

        时间:2023-12-03
          <bdo id='uozG2'></bdo><ul id='uozG2'></ul>
            <i id='uozG2'><tr id='uozG2'><dt id='uozG2'><q id='uozG2'><span id='uozG2'><b id='uozG2'><form id='uozG2'><ins id='uozG2'></ins><ul id='uozG2'></ul><sub id='uozG2'></sub></form><legend id='uozG2'></legend><bdo id='uozG2'><pre id='uozG2'><center id='uozG2'></center></pre></bdo></b><th id='uozG2'></th></span></q></dt></tr></i><div id='uozG2'><tfoot id='uozG2'></tfoot><dl id='uozG2'><fieldset id='uozG2'></fieldset></dl></div>
            <tfoot id='uozG2'></tfoot>

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

                <tbody id='uozG2'></tbody>
              • <legend id='uozG2'><style id='uozG2'><dir id='uozG2'><q id='uozG2'></q></dir></style></legend>

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

                  问题描述

                  阅读后这篇文章在 Herb Sutter 的博客上,我进行了一些实验,但遇到了一些令我感到困惑的事情.我使用的是 Visual C++ 2005,但如果这取决于实现,我会感到惊讶.

                  After reading this article on Herb Sutter's blog, I experimented a bit and ran into something that puzzles me. I am using Visual C++ 2005, but I would be surprised if this was implementation dependent.

                  这是我的代码:

                  #include <iostream>
                  
                  using namespace std;
                  
                  struct Base {
                      //Base() {}
                      ~Base() { cout << "~Base()" << endl; }
                  };
                  
                  int main()
                  {
                      const Base & f = Base();
                  }
                  

                  运行时,它显示~Base()"两次...但是如果我取消注释构造函数,它只显示一次

                  When run, it displays "~Base()" twice... But if I un-comment the constructor, it displays it only once!

                  有人对此有解释吗?

                  推荐答案

                  这取决于实现.

                  该标准允许在将临时引用绑定到常量引用时进行复制.在您的情况下,VC++ 仅在隐式定义构造函数时执行复制.这是出乎意料的,但也是允许的.

                  The standard allows a copy to occur when binding a temporary to a const reference. In your case, VC++ performs a copy only when the constructor is implicitly defined. This is unexpected, but permitted.

                  C++1x 将解决这个问题.

                  这篇关于对临时的常量引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:对解除引用的指针的引用地址是否与指针地址相同? 下一篇:运算符重载可以在没有引用的情况下工作吗?

                  相关文章

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

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

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

                  1. <legend id='HnehR'><style id='HnehR'><dir id='HnehR'><q id='HnehR'></q></dir></style></legend>