国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C++中引用和匿名對象的理解和本質剖析

開發 后端
如果生成的匿名對象在外部有對象等待被其實例化,此匿名對象的生命周期就變成了外部對象的生命周期;如果生成的匿名對象在外面沒有對象等待被其實例化,此匿名對象將會生成之后,立馬被析構。

大家對C++的引用應該都不陌生吧,抱著既要知其然,也要知其所以然的態度。下面將按照是什么?怎么用?為什么需要?本質剖析的流程來向大家一一描述。

引用是什么?

引用其實就是給變量起的一個別名,使用這個別名跟使用變量名沒有區別。

那什么又是變量名呢?

變量名實質上是一段連續存儲空間的別名,是一個標號(門牌號),編譯器通過變量來申請并命名內存空間,程序員可以通過變量的名字可以使用存儲空間。

也可以這樣理解,變量名是邏輯概念,變量是物理層面,變量含數據類型和數據值,數據類型決定內存的分配,編譯器將變量名和變量對應的內存聯系起來,使程序員可以通過變量名來操作內存。

引用怎么用?

語法:Type& name = var;

規則:1、普通引用在聲明時必須用其它的變量進行初始化

2、引用作為函數參數聲明時不進行初始化(后面將通過引用本質來解釋原因)

為什么需要引用?

1)引用作為其它變量的別名而存在,因此在一些場合可以代替指針

2)引用相對于指針來說具有更好的可讀性和實用性

引用為java等高級的語言程序員提供了很大便利,其不需要了解C++中的指針,只需要按照以前的習慣來使用就可以。

引用的本質剖析(很重要?。。?/p>

1、引用其實是個常量,證明如下

  1. int main() 
  2. int a = 1
  3. //int& b;   C++編譯器提示:錯誤“b”,必須初始化引用-->說明引用是個常量 
  4. int& b = a; 

說明: 必須初始化引用–>說明引用是個常量

2、引用其實也是個指針,證明如下

 

  1. struct teacher 
  2. int age;  //4個字節 
  3. teacher& m_techer; 
  4. }; 
  5.  
  6. struct student 
  7. int age;               //4個字節 
  8. short& weight; 
  9. }; 
  10.  
  11. int main() 
  12. cout說明m_techer的 
  13.                                                      引用占4個字節*/ 
  14. cout說明weight的引 
  15.                                                      用占4個字節*/ 
  16. system("pause"); 
  17. return 0

說明:從上面teacher&和short&的兩個引用中占用的4個字節(32位系統),可以推斷出引用其實是個指針。

根據1、2的結論可以推斷出引用其實是個指針常量或者是常量指針,下面進一步證明。

3、引用其實是個指針常量 ,證明如下

 

  1. int main() 
  2. int a =10
  3. int m = 22
  4.  
  5. int& b = a; 
  6. &b = &m;      /*疑問:  b是引用,引用是個指針,指針賦值為什么還要在取地址符&b 
  7.                      (因為編譯器在我們使用引用時,自動給引用披上了間接引用的外衣即:*b) 
  8.                  編譯錯誤 “=”: 左操作數必須為左值-->引用是個指針常量,不能修改 
  9.                    其指針的指向。*/ 
  10.  
  11. system("pause"); 
  12. return 0

說明:引用是個指針常量。下面會說出C++編譯器是怎么在C語言的基礎上加入引用機制的。

4、C++編譯器在C語言的基礎上加入引用機制

 

說明:

1、聲明引用時,C語言將引用聲明的是指針常量。(為啥要初始化引用原因)

2、引用使用,C語言隱藏了對常指針自動間接引用,讓我們完全不用了解指針

3、初始化引用時,C語言隱藏了對變量的取地址符&操作,讓我們感覺是在直接給變量起別名

應用的剖析到此就結束了,下面我們來說說匿名對象吧。

什么是匿名對象

匿名對象可以理解為是一個臨時對象,一般系統自動生成的,如你的函數返回一個對象,這個對象在返回時會生成一個臨時對象。

匿名對象的生命周期(很重要?。。。?/p>

 

  1. class Cat 
  2. public
  3.     Cat() 
  4.     { 
  5.         cout<<"Cat類 無參構造函數"<<endl; 
  6.     } 
  7.  
  8.     Cat(Cat& obj) 
  9.     { 
  10.         cout<<"Cat類 拷貝構造函數"<<endl; 
  11.     } 
  12.  
  13.     ~Cat() 
  14.     { 
  15.         cout<<"Cat類 析構函數 "<<endl; 
  16.     } 
  17.  
  18. }; 
  19.  
  20. void playStage() //一個舞臺,展示對象的生命周期 
  21.     Cat();             /*在執行此代碼時,利用無參構造函數生成了一個匿名Cat類對象;執行完此行代碼, 
  22.                             因為外部沒有接此匿名對象的變量,此匿名又被析構了*/ 
  23.     Cat cc = Cat();    /*在執行此代碼時,利用無參構造函數生成了一個匿名Cat類對象;然后將此匿名變 
  24.                             成了cc這個實例對象,此匿名對象沒有被析構。*/ 
  25.     cout<<"cc 對象好沒有被析構"<<endl;    
  26.  
  27. int main() 
  28.     playStage(); 
  29.     system("pause"); 
  30.     return 0

輸出:

Cat類 無參構造函數
Cat類 析構函數
Cat類 無參構造函數
cc 對象好沒有被析構
Cat類 析構函數

說明:

1、在執行playStage( )函數中的Cat( )時,生成了一個匿名對象,執行完Cat( )代碼后,此匿名對象就此消失。這就是匿名對象的生命周期。

2、在執行playStage( )函數中Cat cc = Cat();時,首先生成了一個匿名對象,因為外部有cc對象在等待被實例化,然后將此匿名對象變為了cc對象,其生命周期就變成了cc對象的生命周期。

總結:

如果生成的匿名對象在外部有對象等待被其實例化,此匿名對象的生命周期就變成了外部對象的生命周期;如果生成的匿名對象在外面沒有對象等待被其實例化,此匿名對象將會生成之后,立馬被析構。

***希望能對大家有幫助,沙米才疏學淺,有什么錯誤請留言指正,謝謝大家。

責任編輯:王雪燕 來源: 沙米筆記
相關推薦

2010-01-20 18:24:51

C++CLI

2010-01-11 15:29:13

引用C++語言

2010-01-28 16:31:54

C++類型

2012-02-13 10:18:42

C++ 11

2023-11-22 13:22:51

C++函數

2024-01-18 10:27:30

C++引用函數

2009-08-19 16:39:44

C#值類型C#引用類型

2011-07-13 16:14:53

C++引用指針

2013-05-27 15:38:37

Java對象C++

2011-07-20 15:58:53

C++引用

2009-08-27 17:51:34

C#匿名方法

2010-01-12 15:03:33

C++代碼

2024-12-16 16:10:31

2012-02-15 09:36:50

C++ 11

2022-07-26 00:36:06

C#C++函數

2011-04-11 13:00:08

C++結構體枚舉

2024-01-03 13:38:00

C++面向對象編程OOP

2011-04-11 09:43:25

C++C

2023-09-13 11:51:16

位域C++

2015-05-13 10:37:58

C++指針與引用
點贊
收藏

51CTO技術棧公眾號

国产欧美一区二区三区久久人妖| 欧美国产日本视频| 精品在线小视频| 中文字幕在线综合| 久久精品亚洲| 国产91九色视频| www.26天天久久天堂| 欧美在线一二三| 五月婷婷导航| 国产乱人伦偷精品视频免下载| 国产精品亚洲片夜色在线| 蜜桃视频m3u8在线观看| 欧美一区二区激情| 少妇性l交大片| 欧美成人第一区| 91久久精品无嫩草影院| 久久在线中文字幕| 欧美1区2区| 色综合老司机第九色激情| 三级网站视频在在线播放| 欧洲亚洲一区| 欧美a级大片在线| 亚洲精品中文字| 美女羞羞视频在线观看| 亚洲国产日韩一区二区| 日本男人操女人| 高清不卡在线观看av| 欧美精品亚洲精品| 欧美日韩国产一区精品一区| 国产精品久久久久久av福利软件| 精品久久国产一区| 亚洲天堂色网站| 国产成人久久婷婷精品流白浆| 国产成人精品日本亚洲11| 牛牛影视久久网| 在线观看亚洲一区| 18视频在线观看| 1024av视频| 欧美日韩亚洲一区二区三区四区| 香蕉国产成人午夜av影院| www.久久东京| 国产精品久久久久久搜索 | 成年人网站在线| 国内精品免费午夜毛片| 成人高清伦理免费影院在线观看| 日本美女爱爱视频| 国产精品午夜在线| av高清资源| 欧美午夜女人视频在线| 天天干天天干天天干天天干天天干| av在线不卡网| 欧美一区二区三区综合| 亚洲成va人在线观看| 成人免费视频观看| 国产精品一区二区三区不卡| 最好看的中文字幕久久| 在线看的av网站| 久久777国产线看观看精品| 高清一区二区中文字幕| 国产美女被下药99| 亚洲精品1区| 日韩中文在线字幕| 成人免费在线播放| 免费观看黄色的网站| 中国色在线观看另类| 色婷婷av在线| 国产成人黄色av| 美腿丝袜一区二区三区| 日韩av懂色| 做爰高潮hd色即是空| 99国产精品一区| 久久77777| 国产精品久久久久久久小唯西川 | 亚洲美女久久| 国产精品区二区三区日本| 懂色av一区二区三区蜜臀| 三级视频在线播放| 国产日韩欧美视频在线| 91精品天堂福利在线观看| 成人片在线免费看| 中文字幕一区二区三区精华液 | 亚洲国产天堂久久综合网| 日韩暖暖在线视频| 亚洲精品69| 涩涩涩999| 日韩最新在线视频| 美女日韩一区| 国产成人福利网站| 性伦欧美刺激片在线观看| 国产精品无码乱伦| 国产精品三级在线观看| 色呦呦呦在线观看| 国产成人精品在线观看| 免费看黄色91| 北岛玲一区二区三区| 久久精视频免费在线久久完整在线看| 2023国产精品久久久精品双| 日本熟妇人妻中出| 97精品一区二区三区| 亚洲小说区图片区| 国产精品99久久免费黑人人妻| 日本一区二区高清| 国产乱妇乱子| 日韩av在线电影网| 久久青草久久| 免费日本一区二区三区视频| 国产精品日韩在线播放| 国产精品久久久久久久久免费相片| 国产在线精彩视频| 又黄又免费的网站| 欧美肥老妇视频| 345成人影院| 国产在线精品自拍| 国产成人精品www牛牛影视| 日韩黄色网址| 日韩亚洲欧美成人| 国产日韩欧美三区| 国产天堂在线观看| 在线成人激情黄色| 91久久夜色精品国产九色| 爱爱爱视频网站| 一本色道综合亚洲| 女一区二区三区| 蜜桃视频一区二区在线观看| 色婷婷久久99综合精品jk白丝| www.久久99| 亚洲女人毛片| 欧美图区在线视频| 欧美日韩性在线观看| 欧美黑粗硬大| 欧美久久久久久久| 五月天丁香久久| 国产主播性色av福利精品一区| 毛片av在线播放| 欧美成人伊人久久综合网| 欧美视频四区| 在线观看视频网站你懂得| 国内成人精品一区| 91偷拍与自偷拍精品| av电影在线免费| 欧美在线播放一区二区| 色婷婷综合久久| 午夜免费一区| 尤物视频网站在线观看| 日本在线精品视频| 国产三级精品视频| 久久爱.com| 免费超爽大片黄| 国产小视频国产精品| 国产精品一区二区你懂的| freexxx性亚洲精品| 亚洲第一在线综合在线| 日韩一区二区三区高清免费看看| 亚洲天堂激情| 日本a在线播放| 久久久水蜜桃| 日韩欧美在线影院| 老司机免费视频久久| 日本伦理一区二区| 一区二区视频在线播放| 亚洲精品视频在线观看视频| 韩国成人精品a∨在线观看| 波多野结衣在线播放| 中文字幕一区二区三区5566| 日韩视频免费观看高清完整版在线观看 | 欧美精品日日鲁夜夜添| 欧美日韩亚洲三区| 男人和女人做事情在线视频网站免费观看| 日韩在线视屏| 国产午夜在线| 国产视频观看一区| 欧美中文字幕不卡| 国产精品亚洲欧美| 九九精品调教| 男人靠女人免费视频网站| 欧美激情免费看| 亚洲精品久久嫩草网站秘色| 欧美日韩伦理| 在线日本视频| 秋霞在线一区二区| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | av动漫在线观看| 性欧美办公室18xxxxhd| 亚洲午夜免费电影| 日韩午夜黄色| 不卡av播放| 亚洲免费av一区二区三区| 国产精品日韩欧美综合| 欧美日韩久久久久久| 久久99精品国产麻豆不卡| 激情视频亚洲| 免费看成年人视频在线观看| 久久综合九色综合久99| 在线亚洲国产精品网| 亚洲视频每日更新| 亚洲综合国产| 一区二区三区四区高清视频| 国产一级黄色电影| 亚洲国产精品毛片| 欧洲美女免费图片一区|