<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

            C++返回對象和返回引用

            時間:2025-03-14 02:53:34 C語言 我要投稿
            • 相關推薦

            C++返回對象和返回引用

              引用的本質是對裸露的地址的二次包裝,它實際返回的還是一個變量或對象的地址,因此如果返回引用不可以返回局部變量的,因為函數在返回之后,該變量就銷毀。下面是其C++返回對象和返回引用,一起來學習下吧:

              代碼是對運算符*進行重載,返回引用和返回對象有不同的結果。

              [cpp] view plain copy#include

              using namespace std;

              class A

              {

              public:

              A() { cout << "A::A()" << endl;}//A構造函數

              A(A& another){cout << "A(A& another)" << endl;}

              ~A(){ cout << "~A::A()" << endl;}//A析構函數

              void func(){ cout << "class A::void func()" << endl;}

              };

              class B

              {

              public:

              B(A* p) :_p(p){cout << "B::B()" << endl;}//B構造函數

              ~B(){ cout << "~B::B()" << endl; }//B析構函數

              A operator*(){ //運算符重載*

              return *_p;

              }

              private:

              A* _p;

              };

              int main(){

              A p1;

              B p2(&p1);

              (*p2).func();

              return 0;

              }

              中,返回的是A類的對象,之后會調用A中的拷貝構造器

              A(A& another);

              即用*_p的值作為參數,在內存中構造一個新的對象,但它沒有名字,是無名對象,之后運行該無名對象中的func()函數,運行完后,這個一次性的無名對象就會銷毀,即調用析構函數。

              同時,返回對象的話也不能在后續對它進行左值運算,編譯器通不過而且也毫無意義,因為之后程序員是沒法訪問到這個無名變量的

              僅此個人觀點,有問題歡迎指正。


            【 C++返回對象和返回引用】相關文章:

            C++ 中引用和指針的關系04-01

            C語言函數的參數和返回值06-02

            關于C和C++函數的相互引用02-25

            c++ const引用與非const引用02-07

            Java中對象和引用的具體區別05-18

            C++ 中指針和引用區別有哪些01-09

            C語言函數的返回值04-11

            C語言返回多個值的方法07-07

            網頁點擊按鈕返回頂部代碼11-30

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院