C this指针详细信息
this是c的关键字,是指向当前对象并可访问当前对象所有成员的常数指针。 以下是小编为大家整理的C this指南的详细内容。 请作为参考~
C this指针详细信息
当前对象是指正在使用的对象。 例如stu.show (;stu是当前对象,this指向stu。
以下是使用this的完整示例:
#包含
用户命名空间STD;
类student {
公共:
语音集名称(char * name );
语音设置(intage;
语音目录(浮动目录);
void show (;
隐私:
char *name;
int age;
浮动得分;
(;
语音稳定:3360 set name (char * name )。
this-name=name;
}
语音事件:3360 setage (intage )。
this-age=age;
}
voidstudent:3360setscore{
this-score=score;
}
void Student:show (
出局了
}
int main () )。
Student *pstu=new Student;
ptu-setname(wjdxrk );
电源设置(16;
紧急设置核心(96.5;
pstu - show (;
返回0;
}
执行结果:
wjdxrk的年龄是16,成绩是96.5
this只能在类内部使用。 使用this,可以访问类的所有成员,包括private、protected和public属性。
在本例中,成员函数的参数和成员变量的重复名称只能在this中区分。 以成员函数setname(char*name )为例,其参数为name,与成员变量name同名。 如果写name=name; 这样的语句不是为成员变量name赋值,而是为形参name赋值。 写this - name=name; 之后,=一眼就可以看到左边的name是成员变量,右边的name是形参。
请注意,this是指针,使用-访问成员变量或成员函数。
this在类内部使用,但仅在创建对象后为this赋值。 此外,分配此值的过程由编译器自动完成,不需要用户干预。 此外,用户也不能明确为this赋值。 在本例中,this的`值和pstu的值相同。
试着向Student类中添加成员函数printThis (),以证明它将输出this的值,如下所示:
void student :3360打印this (
出局了
}
然后调用main (用函数创建对象,然后打印this )。
Student *pstu1=new Student;
pstu1 - printThis (;
出局了
Student *pstu2=new Student;
pstu2 - printThis (;
出局了
执行结果:
0x7b17d8
0x7b17d8
0x7b17f0
0x7b17f0
可以看到,this确实指向当前对象,并且值因对象而异。
一些注意事项:
this是常数指针,不能更改值。 不允许更改指针的所有操作,如赋值、增量和减量。
this只能在成员函数内部使用,在其他地方使用也没有意义,是违法的。
this仅在创建对象时有意义,因此不能与静态成员函数一起使用。 关于静态成员将在后面叙述。
this到底是什么
this实际上是成员函数的参数,在调用成员函数时将对象的地址作为实际参数传递给this。 但是,名为this的参数是隐式的,不会出现在代码中,编译器在编译阶段会隐式添加到参数列表中。
this作为隐式参数,本质上是成员函数的局部变量,因此只能在成员函数内部使用。 此外,只有在从对象调用成员函数时,才能为this赋值。