this 指標
this是c++中乙個關鍵字,也是const指標。它指向當前物件,通過它可以訪問當前物件的所以成員到底什麼是this指標:所謂當前物件,是指正在使用的物件,例如:stu.show(); , stu就是當前物件,this就指向stu。
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 ...