C++类中this指针的说明
来源:互联网 发布:修改linux登入密码 编辑:程序博客网 时间:2024/04/29 23:07
this指针:
1.说明:当程序中一个类定义了多个对象,多个对象都调用类中同一个成员函数时,此时怎么区别这个成员函数在哪个对象上操作,C++提供了this指针。如:
class Data{public:void SetData(int year,int month,int day){_year=year;_month=month;_day=day;}private:int _year;int _month;int _day;};int main(){Data d1,d2;d1.SetData(2016,9,25);d2.SetData(2016,9,25);return 0;}创建两个Data类对象d1,d2,都调用成员函数SetData()函数,此时它是在那一个对象上操作,this指针发生作用。
2.定义:每个类的成员函数都默认隐含定义了一个指针,当创建一个类对象并用对象调用成员函数时,这个指针就被初始化为这个对象的地址,使它指向调用函数的对象,这个指针被称为this指针。即如上段代码Data类中成员函数SetData(),它会在识别类时编译器对其进行改写,变为:
void SetDate(Date* const this, int year, int month, int day){ this->_year = year;this->_month = month;this->_day = day;}
struct Date{int _year;int _month;int _day;};void SetDate(<span style="color:#ff0000;">Date* _this</span>, int year, int month, int day){_this->_year = year;_this->_month = month;_this->_day = day;}int main(){Date d1;SetDate(<span style="color:#ff0000;">&d1</span>, 2016, 9, 26);return 0;}上述代码创建结构体对象d1,在函数中传人d1地址,用_this指针接收,所以这两种实现方法是相同的。
由上也可总结出this指针—
3.特性:
(1)类型:类类型 *const(常量指针),this指针不能被修改和赋值(它存放的是某一个类对象地址);
(2)this指针是一个隐含指针,不能被显示声明,它是类成员函数的第一个默认隐含参数,在函数体内可隐含使用它来访问本类的数据成员和成员函数,它并由编译器自动维护传递;
(3)this指针是局部变量,局部每个对象,在任何非静态成员函数中都可见;
(4)this指针只有在对象调用成员函数时才被初始化重新定向,指向对象隐式传递到成员函数,进入不能再被修改;
(5)this指针并不是对象一部分,不影响sizeof 结果,它的作用域一般在类成员函数内部。
0 0
- C++类中this指针的说明
- this指针说明(c++)
- C ++的this指针
- 【c++】this 指针和类的继承
- C++类中this指针的理解
- C++中类的this指针理解
- C++类中this指针的理解
- this指针的详细说明与使用
- C++this指针的理解
- C++this指针的理解
- C++this指针的用法
- 【c++】this指针的使用
- 【C++】隐含的this指针
- 类的this指针
- C指针的一些说明
- C++Primer学习-类(隐含的this指针)
- 【C++】谈谈类定义里的this指针
- 【C++】【学习笔记】【016】this指针和类的继承
- 扣丁学堂——ViewPage(实现滑动引导页)
- leetcode 35. Search Insert Position
- hibernate的执行流程
- CAT - 监控平台之装配篇
- 堆 C++实现
- C++类中this指针的说明
- HDU 1176 免费馅饼 (DP)
- [OC基础]ARC机制
- #line、几个常见C语言预处理和条件编译
- 真实的安卓公司面试题?希望帮助大家(二)
- javascript连=符号
- 第五周 项目二——链栈算法库
- Qt下载安装
- 学生会竞选新闻稿