显式使用this指针介绍了this指针对象的定义。 对象的成员函数已知通过this指针对象访问成员变量和成员函数。
默认情况下,this指针是隐式使用的,并作为参数传递给成员函数。 例如,具有student类的成员函数print ()定义如下:
void打印() }
cout 'name=' name endl;
cout 'addr=' addr endl;
cout 'number=' number endl;
}
编译器将按以下方式处理此:
语音打印(student * this ) {
cout 'name=' this-name endl;
cout 'addr=' this-addr endl;
cout 'number=' this-number endl;
}
是将this指针添加到成员函数的参数列表中。 调用成员函数stud3.print ()时,实际上调用如下:
stud3.print(stud3;
此时,将stud3对象的地址传递到波形参考this指针,并且然后根据this的指示参考每个成员。
注意,它们是通过编译系统自动实现的,开发人员不需要将this指针添加到参数中,也不需要将对象stud3的地址传递给this指针。 上述是分析过程,只是为了让读者了解this指针的作用和实现机制。
现在,在将this指针对象传递给对象的成员函数后,可以显式使用this指针对象。 可以通过this指针对象访问变量和函数。 例如:
void打印() }
cout 'name=' this-name endl;
cout 'addr=' this-addr endl;
cout 'number=' this-number endl;
}
此时,通过this指针访问name成员变量。
因为知道this指针是指针,所以可以使用指针降级运算符*来操作this指针并返回到它指向的对象。 例如,*this表示this指针指向的对象。 以下是测试的示例。
程序的执行结果如下。
print ()函数显示可以通过this指针明确访问它指向的对象。 也可以使用指针退化运算符*进行操作,返回到this指针指向的对象。
因此,stud1.print (执行函数调用相当于:
stud1.print(stud1;
在这种情况下,print ()函数中的this指针指向stud1对象。 *this表示stud1对象。
使用指针降级运算符*操作this指针以访问this指向的对象的成员函数或成员变量时,不能省略*this两侧的括号或写为*this.name。 因为成员运算符“.”的优先级高于运算符“*”,*this. name相当于*(this. name ),而this.name无效并导致编译错误。
fzdyet Linux C/C编程教程,Linux系统编程,Openwrt系统开发,微信336013926572996,QQ:1523520001,博客: www .