首页 / C++ / C++的 this 指针
C++的 this 指针
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++的 this 指针,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2169字,纯文字阅读大概需要4分钟。
内容图文
![C++的 this 指针](/upload/InfoBanner/zyjiaocheng/734/8eecc93724114fad8fbbc84d57413b55.jpg)
现在还是没有找到合适的工作啊,心情有点郁闷,时阴时晴的。不过有时候刹那间想想一岁多点的吾儿,心里面还是满温馨的。好了,闲话不多说,今天给大家分享一下我对C++ this指针的一些感悟。
在介绍this指针前要说明一个概念,那就是当一个类被实例化为对象时,此时的对象内存中是不包含成员函数的,换句话说,成员函数不存在于类中,它存在于栈中的代码区,一个类只有一份。当被实例化出多个对象时,通过成员函数调用成员变量时,就需要this指针
来指出对象里面成员变量的位置。下面通过代码来演示一下。
首先声明头文件array.h 友情提示声明完头文件最后不要忘记加分号。
class array { public: array(int len); ~array(); void setlen(int len); array* getlen(); void printinfo(); private: int len; };
其次定义这个类
#include<iostream> #include"array.h" using namespace std; array::array(int len) { this->len=len; } array::~array() { } void array::setlen(int len) { this->len = len; } array* array::getlen() { return this; } void array::printinfo() { }
最后引入主函数
#include <iostream> #include <stdlib.h> #include"array.h" using namespace std; int main(int argc, char *argv[]) { array arr1(10); array *p =&arr1; array *p1=new array(10); cout<<arr1.getlen()<<endl; cout<<&arr1<<endl; cout<<p<<endl; cout<<p1<<endl; system("PAUSE"); return 0; }
运行结果如下图
其中前三个地址都为对象arr1的地址,最后一个为在堆中新开辟的内存的对象的地址。这说明this指针的地址和对象的地址相同,但它是给成员函数用的。下面更改代码让getlen()返回arr1这个对象,在C++中要在一个函数中返回一个已经存在的全局变量或者一个实例化的
对象就需要引用,因为引用的作用就是返回它本身。
//array.h class array { public: array(int len); ~array(); void setlen(int len); array& getlen(); void printinfo(); private: int len; }; //array.cpp #include<iostream> #include"array.h" using namespace std; array::array(int len) { this->len=len; } array::~array() { } void array::setlen(int len) { this->len = len; } array& array::getlen() { return *this; } void array::printinfo() { cout<<" printinfo()"<<endl; } //main.cpp #include <iostream> #include <stdlib.h> #include"array.h" using namespace std; int main(int argc, char *argv[]) { array arr1(10); array *p =&arr1; array *p1=new array(10); //cout<<arr1.getlen().printinfo()<<endl; cout<<&arr1<<endl; cout<<p<<endl; cout<<p1<<endl; system("PAUSE"); return 0; }
内容总结
以上是互联网集市为您收集整理的C++的 this 指针全部内容,希望文章能够帮你解决C++的 this 指针所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。