C++的this指针
大家好,又见面了,我是你们的朋友全栈君。
C++的this指针
当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。 对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢? this是一个指针,它时时刻刻指向你这个实例本身。
C++在初始化对象时,每个对象中的数据成员都会得到系统分配的自己独立的存储空间。对于成员函数来说,一个函数的代码段在内存中只有一份,同一个类中的不同对象在调用自己的成员函数时,,它们其实调用的是同一段函数代码。
那么问题来了,当一个对象调用自己的成员函数时,如何保证成员函数中对数据成员的处理是自己的数据成员而不是其他对象的数据成员呢? 那么我们就会使用this指针。
this指针的特性:
1、this指针的类型const(类名const),为右值。 2、this指针本身不占用大小,并不是对象本身的一部分,不影响sizeof的结果。 3、this的作用域在类成员函数的内部。 4、this指针是类成员函数的第一个默认隐含参数,编译器自动维护传递,类编写者不能显式传递。 5、只有在类的非静态成员函数中才可以使用this指针, 其它任何函数都不可以。 6、this指针时刻指向对象 。 7、当this指针指向空时,是不会指向对象的。
this指针的用处:
1.在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this 2.当参数与成员变量名相同时,如this->n = n (不能直接写n = n)。
下面我就第二点进行举例:
#include <iostream>
using namespace std;
class A {
private:
int a = 1;
public:
void seta(int a) {
a = a;
}
void print() {
cout << a << endl;
}
};
int main() {
A m;
m.seta(5);
m.print();
}
这段代码非常简单,我们的关注点主要在a = a这一句,然后这个代码运行结果是多少呢?可能许多人都认为是5吧,不过你如果把它复制到IDE里面调试看看却发现输出结果是1。
然后我们再把this指针加上试试:
#include <iostream>
using namespace std;
class A {
private:
int a = 1;
public:
void seta(int a) {
this -> a = a;
}
void print() {
cout << a << endl;
}
};
int main() {
A m;
m.seta(5);
m.print();
}
这时候答案就是5了。也就是说,成员函数的参数不能与对象的成员变量重名,如果一定要重名,就必须用this指针指明。
this作用域是在类的内部,自己声明一个类的时候,还不知道实例化对象的名字,所以用this来使用对象变量的自身。在非静态成员函数中,编译器在编译的时候加上this作为隐含形参,通过this来访问各个成员(即使你没有写上this指针)。
2019年4月7日
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145836.html原文链接:https://javaforall.cn
相关文章
- 【C++】自引用this指针的秘密
- C++中this指针的理解和用法
- C++和Java有哪些区别
- C++和java的区别和联系「建议收藏」
- 【精进C++】现代C++白皮书:在拥挤和变化的世界中茁壮成长 C++ 2006–2020
- 跳跃表(skiplist )详解及其C++编程实现
- c++ auto类型_auto C++
- C++stl库_c++库
- C++结构体和类的区别_c++有结构体吗
- C++字符串加密_c++字符串连接函数
- C++基础——C++面向对象之类、对象与继承基础总结(类和对象概念、构造函数与析构函数、this指针、继承)
- c++ primer读书笔记
- C/C++ 实现常用的线程注入
- C/C++ 实现提升访问令牌权限
- 华为机试HJ27-查找兄弟单词-C++实现
- C++11类型转换
- C++成员对象和封闭类详解
- C++容器适配器简介
- C++ this指针详解
- Linux修改内容命令:轻松编辑文件!Note: This is an AIgenerated article not a humanwritten one. Please take this into account when reading it.(linux修改内容命令)
- 深入c++中临时对象的析构时机的详解
- C++基本算法思想之穷举法
- C++中指向结构体变量的指针
- C++处理键盘输入的方法