成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++中的this指針

開(kāi)發(fā) 后端
一個(gè)對(duì)象的成員函數(shù)其實(shí)就是一般的全局函數(shù),只是編譯器給它隱含加了一個(gè)指向該對(duì)象的const指針,這就是this指針。下面讓我們一起來(lái)了解一下this指針吧!

this 指針是一個(gè)隱含于每一個(gè)類(lèi)的成員函數(shù)中的特殊指針(包括析構(gòu)函數(shù)和構(gòu)造函數(shù)),它用于指向正在被成員函數(shù)操作的對(duì)象。不過(guò),在一般的程序設(shè)計(jì)中不直接用它的,this是一個(gè)指針變量,因此在成員函數(shù)中,可以使用*this來(lái)表示正在調(diào)用該函數(shù)的對(duì)象。

1. this指針的用處:

一個(gè)對(duì)象的this指針并不是對(duì)象本身的一部分,不會(huì)影響sizeof(對(duì)象)的結(jié)果。this作用域是在類(lèi)內(nèi)部,當(dāng)在類(lèi)的非靜態(tài)成員函數(shù)中訪問(wèn)類(lèi)的非靜態(tài)成員的時(shí)候,編譯器會(huì)自動(dòng)將對(duì)象本身的地址作為一個(gè)隱含參數(shù)傳遞給函數(shù)。也就是說(shuō),即使你沒(méi)有寫(xiě)上this指針,編譯器在編譯的時(shí)候也是加上this的,它作為非靜態(tài)成員函數(shù)的隱含形參,對(duì)各成員的訪問(wèn)均通過(guò)this進(jìn)行。   

例如,調(diào)用date.SetMonth(9) <===> SetMonth(&date, 9),this幫助完成了這一轉(zhuǎn)換 .

2. this指針的使用:

一種情況就是,在類(lèi)的非靜態(tài)成員函數(shù)中返回類(lèi)對(duì)象本身的時(shí)候,直接使用 return *this;另外一種情況是當(dāng)參數(shù)與成員變量名相同時(shí),如this->n = n (不能寫(xiě)成n = n)。

3. this指針程序示例:

this指針存在于類(lèi)的成員函數(shù)中,指向被調(diào)用函數(shù)所在的類(lèi)實(shí)例的地址。   

根據(jù)以下程序來(lái)說(shuō)明this指針   

 

  1. #include<iostream.h>     
  2. class Point     
  3. {     
  4. int x, y;     
  5. public:     
  6. Point(int a, int b) { x=a; y=b;}     
  7. void MovePoint( int a, int b){ x+=a; y+=b;}     
  8. void print(){ cout<<"x="<<x<<"y="<<y<<endl;}  
  9. };     
  10. void main( )     
  11. {     
  12. Point point1( 10,10);     
  13. point1.MovePoint(2,2);     
  14. point1.print( );     
  15. }    

 當(dāng)對(duì)象point1調(diào)用MovePoint(2,2)函數(shù)時(shí),即將point1對(duì)象的地址傳遞給了this指針。   

MovePoint函數(shù)的原型應(yīng)該是 void MovePoint( Point *this, int a, int b);***個(gè)參數(shù)是指向該類(lèi)對(duì)象的一個(gè)指針,我們?cè)诙x成員函數(shù)時(shí)沒(méi)看見(jiàn)是因?yàn)檫@個(gè)參數(shù)在類(lèi)中是隱含的。這樣point1的地址傳遞給了this,所以在MovePoint函數(shù)中便顯式的寫(xiě)成:   

void MovePoint(int a, int b) { this->x +=a; this-> y+= b;}   

即可以知道,point1調(diào)用該函數(shù)后,也就是point1的數(shù)據(jù)成員被調(diào)用并更新了值。   

即該函數(shù)過(guò)程可寫(xiě)成 point1.x+= a; point1. y + = b; 

4. 關(guān)于this指針的一個(gè)經(jīng)典回答:

當(dāng)你進(jìn)入一個(gè)房子后,   

你可以看見(jiàn)桌子、椅子、地板等,   

但是房子你是看不到全貌了。   

對(duì)于一個(gè)類(lèi)的實(shí)例來(lái)說(shuō),   

你可以看到它的成員函數(shù)、成員變量,   

但是實(shí)例本身呢?   

this是一個(gè)指針,它時(shí)時(shí)刻刻指向你這個(gè)實(shí)例本身

通過(guò)上面的分析,我們可以了解到,this就是自己,自己就是this,每個(gè)對(duì)象都有一個(gè)指向自己的this指針,就因?yàn)檫@個(gè)this指針,才使得有不同的實(shí)例,要不一個(gè)類(lèi)豈不是就像一個(gè)實(shí)例了??

【編輯推薦】

  1. C++析構(gòu)函數(shù)和this指針說(shuō)明
  2. PHP關(guān)鍵字this指向當(dāng)前對(duì)象指針
  3. Javascript的this關(guān)鍵字與scope詳解
  4. jQuery中this與$(this)的區(qū)別
責(zé)任編輯:于鐵 來(lái)源: 百度
相關(guān)推薦

2011-04-19 16:38:00

對(duì)象指針指針C++

2011-04-19 09:19:09

C++指針

2024-01-09 09:23:12

指針C++

2011-04-11 14:18:37

CC++指針

2021-12-21 15:31:10

C++語(yǔ)言指針

2015-05-13 10:37:58

C++指針與引用

2010-12-17 10:07:59

2024-01-25 11:42:00

C++編程指針常量

2023-12-26 12:13:31

野指針C++編程

2014-01-24 09:49:01

C++指針

2024-05-15 16:01:04

C++編程開(kāi)發(fā)

2011-07-20 17:54:02

C++

2010-01-26 13:42:28

C++指針

2011-07-15 01:38:56

C++this指針

2021-10-27 16:27:20

C++指針操控

2023-12-20 12:40:51

C++RAII編程

2024-07-03 12:04:42

C++this?

2010-01-28 13:57:19

C++指針基礎(chǔ)

2021-06-10 08:51:57

C++指針聲明指針相關(guān)概念

2011-07-20 16:43:34

C++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品精品视频一区二区三区 | 成人免费视频网站 | 午夜小影院 | 精品国产欧美一区二区 | 亚洲福利一区 | 午夜影院官网 | 国产欧美在线播放 | 99在线免费观看视频 | 亚洲有码转帖 | 国产精品久久 | 成人免费久久 | 亚洲欧美一区二区三区国产精品 | 免费在线观看一区二区三区 | 伊人精品久久久久77777 | 欧美一区二区 | 精品一二区 | 一区二区三区免费 | 日韩精品专区在线影院重磅 | 日韩一区不卡 | 久久精品免费看 | 日韩精品一区二区三区高清免费 | 黄色片视频网站 | 国产免费一区二区 | 国产在线一区二区 | 欧产日产国产精品视频 | 伊人久久精品 | 爱综合| 欧美在线视频观看 | 91精品久久久久 | 日本免费一区二区三区视频 | 日本亚洲精品成人欧美一区 | 在线观看av不卡 | 一久久久 | 一区二区三区亚洲 | 日韩国产黄色片 | 久久不卡 | 国产日韩欧美一区 | 欧美日韩高清在线观看 | 精品一区在线 | 国产欧美一区二区三区在线播放 | 亚洲视频在线观看 |