成员函数中可以直接存取其他成员,例如以下的do_something(),a与b为两个资料成员
int do_something() {
return a + b;
}
这种写法指是种简便的方式,其实编译器会自动填入this 指标(pointer) ,如下
int do_something() {
return this->a + this->b;
}
this指标用来存取类别中的成员,明确使用this指标也不必担心成员函数的参数名称是否与变数成员相同,举例如下
#include <iostream>
class Demo {
public:
Demo(int a, int b) {
this->a = a;
this->b = b;
}
int do_something() {
return this->a + this->b;
}
private:
int a;
int b;
};
int main() {
Demo d(22, 60);
std::cout << d.do_something() << std::endl;
return 0;
}
建构函数 Demo()的参数a与b与资料成员a与b有相同的名称,因为明确使用this指标,所以可以区分哪个a与b是参数,另一个a与b则是资料成员
Demo(int a, int b) {
this->a = a;
this->b = b;
}
编译执行,结果如下
$ g++ u0907.cpp
$./a.out 复制代码
82
$