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
student.cpp#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
main.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()
#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...