一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

C語(yǔ)言

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

時(shí)間:2025-03-14 02:53:34 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

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

  引用的本質(zhì)是對裸露的地址的二次包裝,它實(shí)際返回的還是一個(gè)變量或對象的地址,因此如果返回引用不可以返回局部變量的,因為函數在返回之后,該變量就銷(xiāo)毀。下面是其C++返回對象和返回引用,一起來(lái)學(xué)習下吧:

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

  [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類(lèi)的對象,之后會(huì )調用A中的拷貝構造器

  A(A& another);

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

  同時(shí),返回對象的話(huà)也不能在后續對它進(jìn)行左值運算,編譯器通不過(guò)而且也毫無(wú)意義,因為之后程序員是沒(méi)法訪(fǎng)問(wèn)到這個(gè)無(wú)名變量的

  僅此個(gè)人觀(guān)點(diǎn),有問(wèn)題歡迎指正。


【 C++返回對象和返回引用】相關(guān)文章:

C++ 中引用和指針的關(guān)系04-01

C語(yǔ)言函數的參數和返回值06-02

關(guān)于C和C++函數的相互引用02-25

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

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

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

C語(yǔ)言函數的返回值04-11

C語(yǔ)言返回多個(gè)值的方法07-07

網(wǎng)頁(yè)點(diǎn)擊按鈕返回頂部代碼11-30

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看