由于c分别存储成员变量和成员函数,因此每个非静态成员函数只能生成一个函数实例。 也就是说,同一类型的多个对象共享一个代码。 如果需要在一个代码中调用自己,可以使用this指针。 this是c提供的特殊对象指针,不需要定义。
this指针指向被调用的成员函数所属的对象
第一个用途:如果形参和成员变量具有相同的名称,则可以使用this指针进行区分
sructmember(member ) intscore ) { this-score=score; //this-成员变量=形参} int score; (; int main () memberN1 ) 5; coutn1.scoreendl; //5}当然,如果形参和成员变量的名称不同时,可以不使用this指针
第二个用途:以类的非静态成员函数返回对象本身。 可以使用return *this进行链编程
sructmember(member ) intscore ) { this-score=score; ) memberaddscore(membern )//如果不在此使用,则返回的也是一个对象,但该对象不是n1,而是临时创建的对象({ this-score=n.score ) 返回* This; (} int score; (; int main () memberN1 ) 5; 成员N2 (100; 成员3 (30; n1 .添加得分(N2; //5100=105N1.addscore(N2 ).add score (n3 ); //105 100 30=235 coutn1.scoreendl; //235}
AddScore ()函数返回对象并引用该对象,因此该对象为n1
sructmember(member ) intscore ) { this-score=score; }memberaddscore(membern ) /这里没有使用引用。 返回的也是对象,但此对象不是n1。 临时创建的对象。 ({ this-score=n.score; 返回* This; (} int score; (; int main () memberN1 ) 5; 成员N2 (100; 成员3 (30; n1 .添加得分(N2; //5100=105N1.addscore(N2 ).add score (n3 ); //105 100=205 coutn1.scoreendl; //205}
AddScore ) )函数返回对象,但没有引用,因此该对象也是临时创建的n1’,而不是n1。 n1’的AddScore ) )函数运行一次后返回n1’)