亚洲一级免费看,特黄特色大片免费观看播放器,777毛片,久久久久国产一区二区三区四区,欧美三级一区二区,国产精品一区二区久久久久,人人澡人人草

C語言

C++返回對(duì)象和返回引用

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

C++返回對(duì)象和返回引用

  引用的本質(zhì)是對(duì)裸露的地址的二次包裝,它實(shí)際返回的還是一個(gè)變量或?qū)ο蟮牡刂,因此如果返回引用不可以返回局部變量的,因(yàn)楹瘮?shù)在返回之后,該變量就銷毀。下面是其C++返回對(duì)象和返回引用,一起來學(xué)習(xí)下吧:

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

  [cpp] view plain copy#include

  using namespace std;

  class A

  {

  public:

  A() { cout << "A::A()" << endl;}//A構(gòu)造函數(shù)

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

  ~A(){ cout << "~A::A()" << endl;}//A析構(gòu)函數(shù)

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

  };

  class B

  {

  public:

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

  ~B(){ cout << "~B::B()" << endl; }//B析構(gòu)函數(shù)

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

  return *_p;

  }

  private:

  A* _p;

  };

  int main(){

  A p1;

  B p2(&p1);

  (*p2).func();

  return 0;

  }

  中,返回的是A類的對(duì)象,之后會(huì)調(diào)用A中的拷貝構(gòu)造器

  A(A& another);

  即用*_p的值作為參數(shù),在內(nèi)存中構(gòu)造一個(gè)新的對(duì)象,但它沒有名字,是無名對(duì)象,之后運(yùn)行該無名對(duì)象中的func()函數(shù),運(yùn)行完后,這個(gè)一次性的無名對(duì)象就會(huì)銷毀,即調(diào)用析構(gòu)函數(shù)。

  同時(shí),返回對(duì)象的話也不能在后續(xù)對(duì)它進(jìn)行左值運(yùn)算,編譯器通不過而且也毫無意義,因?yàn)橹蟪绦騿T是沒法訪問到這個(gè)無名變量的

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


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

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

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

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

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

Java中對(duì)象和引用的具體區(qū)別05-18

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

C語言函數(shù)的返回值04-11

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

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