一、 引入
定義一個(gè)類(lèi)的對(duì)象,首先系統(tǒng)已經(jīng)給這個(gè)對(duì)象分配了空間,然后會(huì)調(diào)用構(gòu)造函數(shù)。一個(gè)類(lèi)有多個(gè)對(duì)象,當(dāng)程序中調(diào)用對(duì)象的某個(gè)函數(shù)時(shí),有可能要訪問(wèn)到這個(gè)對(duì)象的成員變量。而對(duì)于同一個(gè)類(lèi)的每一個(gè)對(duì)象,都是共享同一份類(lèi)函數(shù)。對(duì)象有單獨(dú)的變量,但是沒(méi)有單獨(dú)的函數(shù),所以當(dāng)調(diào)用函數(shù)時(shí),系統(tǒng)必須讓函數(shù)知道這是哪個(gè)對(duì)象的操作,從而確定成員變量是哪個(gè)對(duì)象的。這種用于對(duì)成員變量歸屬對(duì)像進(jìn)行區(qū)分的東西,就叫做this指針。事實(shí)上它就是對(duì)象的地址,這一點(diǎn)從反匯編出來(lái)的代碼可以看到。
二、分析
1、測(cè)試代碼:
view sourceprint?///////////////////////////////////////////////////
#include
using namespace std;
/////////////////////////////////////////////////////
class A
{
public:
A(char *szname)
{
cout<<"construct"<
name = new char[20];
strcpy(name, szname);
}
~A()
{
cout<<"destruct"<
delete name;
}
void show();
private:
char *name;
};
/////////////////////////////////////////////////////
void A::show()
{
cout<<"name = "<
}
/////////////////////////////////////////////////////
int main()
{
A a("zhangsan");
a.show();
system("pause");
return 0;
}