C 之this指標詳解

2021-10-06 17:24:29 字數 2744 閱讀 9465

this指標

每個成員函式(包括構造和析構)都有乙個this指標。

this指標指向呼叫物件,即可以通過this關鍵字訪問物件成員。

//訪問成員變數

this

->成員名;

//訪問成員函式

this

->函式名(

);

注意:

1.this指標的型別為類型別*const(類名 *const ),為右值。

2.this指標本身不占用大小,它並不是物件的一部分,因此不會影響sizeof的結果。

3.this的作用域在類成員函式的內部。

4.this指標是類成員函式的第乙個預設隱含引數,編譯器自動維護傳遞,類編寫者不能顯式傳遞。

5.只有在類的非靜態成員函式中才可以使用this指標,其它任何函式都不可以。

可以返回當前物件的引用

class

student

student& student::

addscore

(int score)

例:

student.h

#ifndef student_h

#define student_h

#include

using

namespace std;

class

student

void

setname

(string val)

string getdesc()

void

setdesc

(string val)

intgetage()

void

setage

(int val)

else

}void

initscores()

;//初始化學生成績陣列,預設分配乙個元素空間

void

addscore

(float score)

;//向scores陣列新增元素

//書寫函式,要求返回學霸物件

student&

getsuperscholar

(student&);

//const; //函式的結尾宣告為const:函式內部不允許修改物件本身,呼叫本物件非const方法就會報錯

float

gettotal()

;protected

:private

: string m_name;

string m_desc;

int m_age;

int scorecount;

//學生成績的個數

float

* scores;

//學生的分數陣列};

#endif

// student_h

student.cpp

#include

"student.h"

#include

#include

using

namespace std;

student::

student()

student::

student

(string name, string desc)

/**student::student(string name, string desc)還可以這樣寫:

//初始化引數列表的寫法

student::student(string name, string desc):m_name(name),m_desc(desc)

void student::

initscores()

void student::

addscore

(float score)

void student::

showinfo()

cout<}float student::

gettotal()

return sum;

}/**

返回學霸物件

@param otherstu 要對比的另乙個學生物件

@return 返回總分比較大的那個學生物件

*/student& student::

getsuperscholar

(student& otherstu)

// const

else

}student::

~student()

main.cpp

#include

#include

"student.h"

using

namespace std;

intmain()

//列印結果

/*呼叫帶參構造:student(string name, string desc)

學霸 張三

98.9 88.9 78.9 68.9 58.9

呼叫帶參構造:student(string name, string desc)

學霸是:張三

學霸是:張三

張三被釋放

張三被釋放

李四被釋放

*/

詳解C 之this指標

this指標,存在於類的非靜態成員函式中,是編譯器給成員函式預設的隱藏的乙個指標。當該函式被某乙個物件呼叫時,該指標指向成員函式的主調物件 保留了該主調物件的記憶體位址 本類物件的指標 問 乙個物件的引用或物件當做函式引數?本人面試曾被問過,答的不太好,進行了總結,希望來者避坑 答 在類的靜態成員函...

C 之 指標詳解篇 二

使用關鍵字new動態分配記憶體,在new後面為其分配記憶體物件的型別,讓編譯器知道需要多少記憶體。new的返回值是乙個記憶體位址,記憶體的位址被儲存在指標中,因此將new的返回值賦給乙個指標。如 short int p p new short int 或者宣告指標的同時直接初始化,short int...

C 指標詳解

指標是乙個特殊的變數,它裡面儲存的數值被解釋為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者指標所指向的記憶體區,還有指標本身所佔據的記憶體區。去掉宣告中指標的名字,剩下的就是指標的型別。例如 int ptr 指標的型別是int char p...