this指针知多少

简介: 众所周知,C语言是一个面向过程的语言,也就是说我调用了这个函数我无法知道是谁调用了我,所以后来出现了C++,当调用某个类成员方法都会默认加上一个this指针来区分到底是谁调用了我。

一、什么是this指针:

简单的来将就是调用者的指针,它的值就是调用者的地址。



二、this指针的作用:

为了区分到底是谁调用到了我这个成员方法



三、this指针需要注意的点:

1. this指针只能在成员函数中使用,且不能显示的写在成员函数的参数列表里面,但是在函数体里面你可以显示的写出来也可以不写出来。


2. this指针是一个const指针,意味着我的指向不能修改,相当于T* const this。代表当前调用本函数的对象的地址。如object.test(),那么this的值就等于&object。


3. this指针,作为函数参数列表的一部分,成员函数调用时开始初始化,调用结束消亡。(this指针相当于一个局部变量,本质上是一个常指针)


4. const可以放到函数参数列表的结尾来修饰我this指针所指向的内容不可以修改


5. 为什么静态成员函数的参数列表后面不能用const修饰?因为静态成员函数无法隐式的传入我的对象的地址,当然你的静态的成员函数的参数列表里面没有this指针,否则就会出现编译错误。


6.为什么静态成员方法无法调用非静态成员?因为非静态成员属于一个类对象,当去使用的时候,本质上相当于this->object。而对于静态成员函数没有this参数



#include <iostream>usingnamespacestd;
classMyObject{
public:
MyObject()
    {
    }
~MyObject()
    {
    }
voidstaticshowStatic()
    {
cout<<sa<<endl; // 访问的是静态成员变量sa,无法访问非静态成员变量a    }
voidshow() const// const修饰的是this指针所指向内容不能更改    {
cout<<this->a<<endl; // 访问的是本对象的a    }
private:
inta=5;
staticintsa;
};
intMyObject::sa=10;
intmain()
{
MyObjectmyobject;
myobject.show(); // 打印出来的是5MyObject::showStatic(); //不依赖于对象,通过类名::也可以调用,打印出来的是10return0;
}
相关文章
|
6月前
|
Java C++
This指针
This指针
43 0
|
5月前
|
数据采集 存储 编译器
this指针如何使C++成员指针可调用
本文介绍了C++中的this指针,它是一个隐藏的指针,用于在成员函数中访问对象实例的成员。文章通过代码示例阐述了this指针的工作原理,以及如何使用指向成员变量和成员函数的指针。此外,还提供了一个多线程爬虫示例,展示this指针如何使成员指针在对象实例上调用,同时利用代理IP和多线程提升爬取效率。
this指针如何使C++成员指针可调用
|
5月前
|
编译器 C++
this指针的特性
this指针的特性
23 0
|
5月前
类与对象\this指针
类与对象\this指针
32 0
|
6月前
|
C++ 编译器
|
5月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
42 0
|
6月前
|
存储 编译器 C语言
【C++】类与对象【定义、访问限定符、this指针】
【C++】类与对象【定义、访问限定符、this指针】
30 1
|
6月前
|
存储 编译器 程序员
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(下)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
24 0
|
6月前
|
存储 编译器 C语言
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(中)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
29 0
|
6月前
|
Java C语言 C++
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(上)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
37 0