C 學習十七 this關鍵字

2021-10-07 11:01:54 字數 2365 閱讀 1689

this 指標

this是c++中乙個關鍵字,也是const指標。它指向當前物件,通過它可以訪問當前物件的所以成員

所謂當前物件,是指正在使用的物件,例如:stu.show(); , stu就是當前物件,this就指向stu。

到底什麼是this指標:

this實際上是成員函式的乙個形參,在呼叫成員函式時將物件的位址作為實參傳遞給this,不過this這個形式是隱式的,它並不出現在**中,而是在編譯階段由編譯器默默將它新增到引數列表中

this作為隱式形參,本質上是成員函式的區域性變數,所以只能用在成員函式內部,並且只有在通過物件呼叫成員函式時才給 this 賦值。

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

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

注意:this指標的型別為類型別*const (類名* const),為右值

this指標本身不占用大小,他並不是物件的一部分,因此不會影響sizeof的效果

this的作用域在類成員內部

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

只有在類的非靜態成員函式在才可以使用this指標,其他函式都不可以。

this->成員名; //訪問成員變數

this->函式名;//訪問成員函式

#include using namespace std;

class student;

void student::setname(char *name)

void student::setage(int age)

void student::setscore(float score)

void student::show()

this只能用在類的內部,通過this可以訪問類的所以成員,包括private、protected、public屬性的 

例子中成員函式中的引數和成員變數重名,只能通過this區分。

this->name=name;//左邊的name就是成員變數 右邊的name是成員函式中的形參

this雖然作用在類的內部,但是只有在物件被建立以後才會給this賦值,並且賦值過程是編譯器完成的,不需要使用者干預,使用者也不能顯式的給this賦值

注意:

class student

void setname(string val)

string getdesc()

int getag()

void setage(int val)

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

void addscores();//新增乙個成績

private:

string m_name;

string m_desc;

int m_age;

float* scores;//學生的分數陣列

int scorescount;//學生的成績個數

}student::student()

void student::addscores()

student::~student()

student stu1; //在棧記憶體中直接分配空間

student stu2("馬化騰","普通家庭");

stu2.showinfo();

student* stu=new student("撒貝南","北大還行"); //在堆記憶體中分配空間

stu->showinfo();

delect stu;

student* ptrstu1=new student("迪麗熱巴","微胖女孩");

ptrstu1->addscore(78.9f);

ptrstu1->addscore(38.7f);

ptrstu1->addscore(76.8f);

ptrstu1->addscore(795.6f);

ptrstu1->addscore(88.59f);

delete ptrstu1;

作用:

可以用來返回當前物件的引用

class student{

public:

strudent& addscore(int score);

C 關鍵字學習

static 限定了被宣告的方法或屬性的訪問方式,只能通過類名進行訪問。private 限定了被宣告的方法或屬性的作用域,僅限被本類內的成員進行訪問,無法通過類或該類物件直接訪問。儲存區別 static宣告的成員被稱為類成員,即該成員屬於該類所有的該類成員都共享這一塊記憶體,不會隨著每個物件的建立而...

C 關鍵字new學習

很多新手對c 關鍵字new可能不是很了解吧,今天我一起來學習一下。new 是c 的乙個關鍵字,同時也是操作符。關於new的話題非常多,因為它確實比較複雜,也非常神秘,下面我將把我了解到的與new有關的內容做乙個總結。new的過程 當我們使用關鍵字new在堆上動態建立乙個物件時,它實際上做了三件事 獲...

學習this關鍵字

在學習msdn的過程中加入一點自己的理解 先學習類例項使用this 以下是 this 的常用用途 printing method public void printemployee nalias name alias passing the object to the calctax method ...