4. this 指针
this 指针是 C++ 成员函数内,指向调用对象地址的指针。在成员函数内部优先访问局部变量,然后才是成员变量。在成员函数如果存在同名的局部变量和成员变量,此时如果需要确切的访问成员变量,此时需要使用 this 指针显示的使用成员变量或成员函数。
作用
this 指针通常用来明确指示某个标识符是成员变量或成员函数,不是局部变量或全局变量。
关键字
this
说明:
C++ 的每个成员函数都有一个 this 指针指向调用此函数的对象(默认成员函数的第一个参数就是 this 指针,只不过 C++ 的语法隐藏了 this 指针(第一个参数));
使用 this 指针重新编写 class Rectangle 类示例
// filename: this_pointer.cpp
#include <iostream>
#include <stdio.h>
using namespace std;
class Rectangle {
public:
void set_width_height(int width, int height) {
printf("this --> %p\n", this);
// 注意此处形参和成员变量的名字相同,需要使用 this 指针区分。
this->width = width, this->height = height;
}
int get_area(void) {
return this->width * this->height;
}
int get_length(void) {
return (this->width + this->height) * 2;
}
private:
int width;
int height;
};
int main(int argc, char * argv[]) {
Rectangle r1;
printf("&r1 --> %p\n", &r1);
r1.set_width_height(10, 2);
cout << "r1的周长:" << r1.get_length() << endl;
cout << "r1的面积:" << r1.get_area() << endl;
return 0;
}
编译和运行结果如下
weimz@mzstudio:~$ g++ -o this_pointer this_pointer.cpp
weimz@mzstudio:~$ ./this_pointer
&r1 --> 0x7fff59230b80
this --> 0x7fff59230b80
r1的周长:24
r1的面积:20
练习
编写代码,尝试使用 this 指针。