C语言和C++语言中this指针详解_第1页
C语言和C++语言中this指针详解_第2页
C语言和C++语言中this指针详解_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C/C+ this 指针详解this 是 C+ 中的一个关键字,也是一个 const 指针,它指向当前对象, 通过它可以访问当前对象的所有成员。 象,this 就指向 stu。下面是使用 this 的一个完整示例:#include using namespace std;class Studentpublic:void setname(char *name); void setage(int age);void setscore(float score); void show();private:char *name; int age; float score;void Student:set

2、name(char *name)this-name = name;void Student:setage(int age)this-age = age;void Student:setscore(float score)this-score = score;void Student:show()coutname的年龄是age,成绩是score setname(李华);pstu - setage(16); pstu - setscore(96.5); pstu - show();return 0;运行结果:李华的年龄是 16,成绩是 96.5this 只能用在类的内部,通过 this 可以访问类

3、的所有成员,包括 private、protected、public 属性的。本例中成员函数的参数和成员变量重名,只能通过 this 区分。以成员函数setname(char*name)namenamenamename;name赋值,而不是给成员变量name赋值。而写作thisnamename;后,=左边的name就是成员变量,右边的name就是形参,一目了然。注意,this 是一个指针,要用-来访问成员变量或成员函数。this 虽然用在类的内部,但是只有在对象被创建以后才会给 this 赋值,并且这个赋值的过程是编译器自动完成的,不需要用户干预,用户也不能显式地给this 赋值。本例中,thi

4、s 的值和 pstu 的值是相同的。我们不妨来证明一下,给 Student 类添加一个成员函数printThis(),专门用来输出 this 的值,如下所示:void Student:printThis() coutthis printThis(); coutpstu1 printThis(); coutpstu2endl;运行结果: 0 x7b17d8 0 x7b17d8 0 x7b17f0 0 x7b17f0可以发现,this 确实指向了当前对象,而且对于不同的对象,this 的值也不一样。几点注意:this 是 const 指针,它的值是不能被修改的,一切企图修改该指针的操作, 如赋值、递增、递减等都是不允许的。this 只能在成员函数内部使用,用在其他地方没有意义,也是非法的。thisstatic(后续会讲到 static 成员)。this 到底是什么this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。this 作为隐式形参,本质上是成员函数的局部变量,所以只能用在成员函数的内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论