指向成員函數(shù)所作用的對象
class Complex {
public:
double real, imag;
void Print() { cout << real << "," << imag ; }
Complex(double r,double i):real(r),imag(i){ }
Complex AddOne() {
this->real ++; //等價(jià)于 real ++;
this->Print(); //等價(jià)于 Print
return * this;
}
};
int main() {
Complex c1(1,1),c2(0,0);
c2 = c1.AddOne();
return 0;
} //輸出 2,1
編譯為C語言的話钞护,就相當(dāng)于先編譯成全局函數(shù)。如下
class CCar
{
public:
int price;
void SetPrice(int p);
};
void CCar::SetPrice(int p)
{ price = p; }
int main() {
CCar car;
car.SetPrice(20000);
return 0;
}
struct CCar {
int price;
};
void SetPrice
(struct CCar * this,int p)
{ this->price = p; }
int main() {
struct CCar car;
SetPrice( & car,20000);
return 0;
}
思考:
class A
{
int i;
public:
void Hello() { cout << "hello" << endl; }
}; //void Hello(A * this ) { cout << "hello" << endl; }
int main()
{
A * p = NULL;
p->Hello(); //Hello(p);
} // 輸出:hello
<v>雖然創(chuàng)建了一個(gè)沒有實(shí)例對象的p指針,但是已經(jīng)定義了p的類型,作為全局函數(shù)的Hello()是可以根據(jù)*p打印“hello”的成洗,但是this.i就是錯(cuò)誤的了</v>
靜態(tài)成員函數(shù)中不能使用 this 指針,因?yàn)殪o態(tài)成員函數(shù)并不具體作用與某個(gè)對象