導航:首頁 > 使用方法 > cthis指針使用方法

cthis指針使用方法

發布時間:2022-03-14 15:10:59

『壹』 C++中的this指針的使用方法,有哪位高手清楚的嗎

this指針實際上是每個非static成員函數的隱式參數,指向調用該函數的對象,編譯器在調用該函數的每個地方自動傳遞當前對象的地址給該參數。

如果你寫過C語言操作結構體的函數代碼的話,你應該知道一般這種函數的第一個參數應該是該結構體變數的指針,該指針用於訪問結構體變數中的成員,而且調用該函數的時候還要傳遞結構體變數的地址。這種指針相當於C++的this,只不過在C++里,編譯器替你做。

所以main函數的語句經過編譯器處理時會變成如下:
int main() {
Human whw;
Human::Introceself( &whw ); // &whw 就等於 == this 了。

}

『貳』 c++的this指針怎麼使用,有沒有詳細的資料

this是對象調用函數中的隱含指針,只在對象調用時有效
如果你要顯示他的值,把它強制轉換成int(this)

『叄』 this指針怎麼用

在一個類當中調用,,通常定義在變數前面。表示指向本個類當中的的變數,而不是類外的相同名的變數,主要作用是區分形同名字的變數

『肆』 this指針的用法

簡單來說,這個東西只能在類的成員函數中用, 用法是我的XX,XX表示變數或者函數
this->a
this->test();
this就是指代類對象本身, 可以不寫
當參數與成員變數同名時,可以用this來區分
this->a = a;

靜態成員函數沒有this

『伍』 誰能告訴我,C語言中的this指針的具體詳細的定義和使用

C++中this指針的理解和用法
先要理解class的意思。class應該理解為一種類型,象int,char一樣,是用戶自定義的類型。(雖然比 int char這樣build-in類型復雜的多,但首先要理解它們一樣是類型)。用這個類型可以來聲明一個變數,比如int x, myclass my等等。這樣就像變數x具有int類型一樣,變數my具有myclass類型。
理解了這個,就好解釋this了,my里的this 就是指向my的指針。如果還有一個變數myclass mz,mz的this就是指向mz的指針。 這樣就很容易理解this 的類型應該是myclass *,而對其的解引用*this就應該是一個myclass類型的變數。
通常在class定義時要用到類型變數自身時,因為這時候還不知道變數名(為了通用也不可能固定實際的變數名),就用this這樣的指針來使用變數自身。

1. this指針的用處:
一 個對象的this指針並不是對象本身的一部分,不會影響sizeof(對象)的結果。this作用域是在類內部,當在類的非靜態成員函數中訪問類的非靜態 成員的時候,編譯器會自動將對象本身的地址作為一個隱含參數傳遞給函數。也就是說,即使你沒有寫上this指針,編譯器在編譯的時候也是加上this的, 它作為非靜態成員函數的隱含形參,對各成員的訪問均通過this進行。
例如,調用date.SetMonth(9) <===> SetMonth(&date, 9),this幫助完成了這一轉換 .
2. this指針的使用:
一種情況就是,在類的非靜態成員函數中返回類對象本身的時候,直接使用 return *this;另外一種情況是當參數與成員變數名相同時,如this->n = n (不能寫成n = n)。

『陸』 關於this指針的用法

this代表當前對像

『柒』 C#中this指針的用法

this 關鍵字引用類的當前實例,還可用作擴展方法的第一個參數的修飾符。
以下是 this 的常用用途:

限定被相似的名稱隱藏的成員,例如:
public Employee(string name, string alias)
{
this.name = name;
this.alias = alias;
}

將對象作為參數傳遞到其他方法,例如:
CalcTax(this);

聲明索引器,例如:
public int this [int param]
{
get { return array[param]; }
set { array[param] = value; }
}

由於靜態成員函數存在於類一級,並且不是對象的一部分,因此沒有 this 指針。在靜態方法中引用 this 是錯誤的。

示例
在本例中,this 用於限定 Employee 類成員 name 和 alias,它們都被相似的名稱隱藏。this 還用於將對象傳遞到屬於其他類的方法 CalcTax。

// keywords_this.cs
// this example
using System;
class Employee
{
private string name;
private string alias;
private decimal salary = 3000.00m;

// Constructor:
public Employee(string name, string alias)
{
// Use this to qualify the fields, name and alias:
this.name = name;
this.alias = alias;
}

// Printing method:
public void printEmployee()
{
Console.WriteLine("Name: {0}\nAlias: {1}", name, alias);
// Passing the object to the CalcTax method by using this:
Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));
}

public decimal Salary
{
get { return salary; }
}
}
class Tax
{
public static decimal CalcTax(Employee E)
{
return 0.08m * E.Salary;
}
}

class MainClass
{
static void Main()
{
// Create objects:
Employee E1 = new Employee("Mingda Pan", "mpan");

// Display results:
E1.printEmployee();
}
}

輸出
Name: Mingda Pan
Alias: mpan
Taxes: $240.00

『捌』 怎麼使用this指針

void A::(const A &a2)
{
this->x = a2.x;
this->y = a2.y;

}

『玖』 C++中this指針的用法和意義是什麼

1. this指針的用處:
一個對象的this指針並不是對象本身的一部分,不會影響sizeof(對象)的結果。this作用域是在類內部,當在類的非靜態成員函數中訪問類的非靜態成員的時候,編譯器會自動將對象本身的地址作為一個隱含參數傳遞給函數。也就是說,即使你沒有寫上this指針,編譯器在編譯的時候也是加上this的,它作為非靜態成員函數的隱含形參,對各成員的訪問均通過this進行。
例如,調用date.SetMonth(9) <===> SetMonth(&date, 9),this幫助完成了這一轉換
2. this指針的使用:
一種情況就是,在類的非靜態成員函數中返回類對象本身的時候,直接使用 return *this;另外一種情況是當參數與成員變數名相同時,如this->n = n (不能寫成n = n)。
3. this指針程序示例:
this指針存在於類的成員函數中,指向被調用函數所在的類實例的地址。
根據以下程序來說明this指針
#include<iostream.h>
class Point
{
int x, y;
public:
Point(int a, int b) { x=a; y=b;}
void MovePoint( int a, int b){ x+=a; y+=b;}
void print(){ cout<<"x="<<x<<"y="<<y<<endl;}
};
void main( )
{
Point point1( 10,10);
point1.MovePoint(2,2);
point1.print( );
}
當對象point1調用MovePoint(2,2)函數時,即將point1對象的地址傳遞給了this指針。
MovePoint函數的原型應該是 void MovePoint( Point *this, int a, int b);第一個參數是指向該類對象的一個指針,我們在定義成員函數時沒看見是因為這個參數在類中是隱含的。這樣point1的地址傳遞給了this,所以在MovePoint函數中便顯式的寫成:
void MovePoint(int a, int b) { this->x +=a; this-> y+= b;}
即可以知道,point1調用該函數後,也就是point1的數據成員被調用並更新了值。
即該函數過程可寫成 point1.x+= a; point1. y + = b;
4. 關於this指針的一個經典回答:
當你進入一個房子後,
你可以看見桌子、椅子、地板等,
但是房子你是看不到全貌了。
對於一個類的實例來說,
你可以看到它的成員函數、成員變數,
但是實例本身呢?
this是一個指針,它時時刻刻指向你這個實例本身

『拾』 C++this指針的使用示例

this指針是類的一個自動生成、自動隱藏的私有成員,它存在於類的非靜態成員函數中,指向被調用函數所在的對象。全局僅有一個this指針,當一個對象被創建時,this指針就存放指向對象數據的首地址。
根據以下程序來說明this指針 #include<iostream>usingnamespacestd;classPoint{private:intx,y;public:Point(inta,intb){x=a;y=b;}voidMovePoint(inta,intb){x+=a;y+=b;}voidprint(){cout<<x=<<x<<y=<<y<<endl;}};intmain(){Pointpoint1(10,10);point1.MovePoint(2,2);point1.print();return0;}當對象point1調用MovePoint(2,2)函數時,即將point1對象的地址傳遞給了this指針。
MovePoint函數的原型應該是 void MovePoint( Point *this, int a, int b);第一個參數是指向該類對象的一個指針,我們在定義成員函數時沒看見是因為這個參數在類中是隱含的。這樣point1的地址傳遞給了this,所以在MovePoint函數中便顯式的寫成:
void MovePoint(int a, int b) { this->x +=a; this-> y+= b;}
即可以知道,point1調用該函數後,也就是point1的數據成員被調用並更新了值。
4. 關於this指針的一個經典回答:
當你進入一個房子後,
你可以看見桌子、椅子、地板等,
但是房子你是看不到全貌了。
對於一個類的實例來說,
你可以看到它的成員函數、成員變數,
但是實例本身呢?
this是一個指針,它時時刻刻指向你這個實例本身
5.使用this指針要注意的事項
相信大家對指針的用法已經很熟了,這里也不多說些定義性的東西了,只說一下指針使用中的注意事項吧。
一.在定義指針的時候注意連續聲明多個指針時容易犯的錯誤,例如int * a,b;這種聲明是聲明了一個指向int類型變數的指針a和一個int型的變數b,這時候要清醒的記著,而不要混淆成是聲明了兩個int型指針。
二.要避免使用未初始化的指針。很多運行時錯誤都是由未初始化的指針導致的,而且這種錯誤又不能被編譯器檢查所以很難被發現。這時的解決辦法就是盡量在使用指針的時候定義它,如果早定義的話一定要記得初始化,當然初始化時可以直接使用cstdlib中定義的NULL也可以直接賦值為0,這是很好的編程習慣。
三.指針賦值時一定要保證類型匹配,由於指針類型確定指針所指向對象的類型,因此初始化或賦值時必須保證類型匹配,這樣才能在指針上執行相應的操作。

閱讀全文

與cthis指針使用方法相關的資料

熱點內容
如何用簡單的方法去除小黑蟲 瀏覽:197
最簡單的套筒方法 瀏覽:406
抹灰的重量計算方法 瀏覽:315
乒乓球桌底座安裝方法 瀏覽:969
澱粉白度檢測方法食品夥伴網 瀏覽:745
手鼓的使用方法視頻 瀏覽:952
電腦屏保動態視頻怎麼設置在哪裡設置方法 瀏覽:188
素描拿筆的方法有哪些 瀏覽:307
移門櫃安裝方法 瀏覽:399
慢性咳嗽的治療方法 瀏覽:990
科學研究論文方法 瀏覽:679
隔空給手機充電的方法 瀏覽:700
數學因式分解方程的方法怎麼用 瀏覽:644
雙層彈簧臂力器正確鍛煉方法 瀏覽:507
硬裝吊頂安裝方法 瀏覽:900
面料四級拼白檢測方法 瀏覽:679
學術史的研究方法 瀏覽:744
pe竿梢結連接方法 瀏覽:43
葡萄膜炎後期有沒有治療方法 瀏覽:211
盈量計算方法 瀏覽:198