返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中关于this指针的入门介绍
  • 175
分享到

C++中关于this指针的入门介绍

2024-04-02 19:04:59 175人浏览 八月长安
摘要

目录简介特性举例注意简介 c++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参 数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有

简介

c++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参

数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成

特性

1. this指针的类型:类类型* const

2. 只能在“成员函数”的内部使用

3. this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this

形参。所以对象中不存储this指针。

4. this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递

举例

class Data {
public:
	void Printf()
	{
		cout << _year <<" "<<" "<< _month <<" "<< _day << endl;
	}
	void Init(int year=2022,int month=5,int day=25)
	{
		_year = year;
		_month = month;
		_day = day;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Data d1,d2;
	d1.Init(2022,1,1);
	d1.Printf();
	d2.Init(2022,2,2);
	d2.Printf();
	return 0;
}

这是一个简单的日期类,那么这里有一个问题,我们在使用打印函数Printf和初始化函数Init的时候,d1和d2调用的是同一个函数,那么编译器是怎么知道我是应该设置/打印d1还是d2呢?

这其实就使用了this指针

那么具体编译器是怎么做的呢?

void Printf(const* this)//编译器实际上处理的
	{
		cout << this->_year << " " << this->_month << " " << this->_day << endl;
	}
	void Printf()//我们看到的
	{
		cout << _year <<" "<<" "<< _month <<" "<< _day << endl;
	}
void Init(const* this,int year=2022,int month=5,int day=25)//编译器处理的
	{
		this->_year = year;
		this->_month = month;
		this->_day = day;
	}
	void Init(int year = 2022, int month = 5, int day = 25)//我们看到的
	{
		_year = year;
		_month = month;
		_day = day;
	}
d1.Init(2022,1,1);//我们看到的
	d1.Init(&d1,2022, 1, 1);//编译器实际上处理的

实际上编辑器取了d1和d2函数的地址,然后传递给了const*this,这样编译器就能自动打印和初始化相应的结构了。

注意

我们不能自己在传参处加const*this和&,这是编译器自己做的,我们不能抢了编译器的活,即使做了,编译也不会通过,但是里面我们可以加

void Printf(const* this)//错误
	{
		cout << _year <<" "<<" "<< _month <<" "<< _day << endl;
	}
void Printf()//可以运行,但是编译器默认都会加this->,所以我们可以不用加,加了也没事
	{
		cout <<this-> _year <<" "<<" "<< this->_month <<" "<< this->_day << endl;
	}

到此这篇关于C++中关于this指针的入门介绍的文章就介绍到这了,更多相关C++ this指针内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++中关于this指针的入门介绍

本文链接: https://lsjlt.com/news/153823.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++中关于this指针的入门介绍
    目录简介特性举例注意简介 C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参 数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有...
    99+
    2024-04-02
  • C++关于指针,继承和多态介绍
    目录指针指针和继承指针、继承和多态指针 我们在书本上学到的指针基本上都是:首先,指针是一个变量;其次,这个变量存储的值是一个地址。这个是对指针的一个基本理解,最近在编程中发现了一些新...
    99+
    2024-04-02
  • C#指针的用法介绍
    这篇文章主要讲解了“C#指针的用法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#指针的用法介绍”吧!指针在C\C++里面可是一个好东西,但是到java,.net的时代指针已经被封装起...
    99+
    2023-06-17
  • c++中this指针的含义
    c++ 中的 this 指针指向调用成员函数的当前对象,它允许函数访问对象成员变量和函数。其作用包括:访问对象成员变量;调用对象成员函数;作为对象引用的代理。 C++ 中的 this ...
    99+
    2024-05-10
    c++
  • c++中this指针的特点
    this 指针在 c++ 中指向正在执行方法的调用对象。其特点包括:自引用隐式传递类型限定支持常量和引用用于虚函数仅在非静态成员函数中可用在进入和退出非静态成员函数时初始化和销毁 C+...
    99+
    2024-05-08
    c++
  • C++中的this指针的功能
    这篇文章主要讲解了“C++中的this指针的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的this指针的功能”吧!this指针是一个特殊的指针,当类的某个非静态的成员函数在执行...
    99+
    2023-06-17
  • 关于Redis数据库入门详细介绍
    目录1、Redis是什么?2、Redis特点:单线程为何如此快?3、redis 对比 memcached4、redis 典型应用场景:5、Redis下载与安装:Redis服务...
    99+
    2024-04-02
  • C语言指针的详细介绍
    这篇文章主要介绍“C语言指针的详细介绍”,在日常操作中,相信很多人在C语言指针的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言指针的详细介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!目录...
    99+
    2023-06-20
  • C++中指针的详解及其作用介绍
    目录概述指向对象的指针指向对象数据成员的指针this 指针this 指针的作用this 指针的实现概述 指针 (pointer) 是一个变量, 其指为另一个变量的地址. 即内存位置的...
    99+
    2024-04-02
  • C++ 中this指针的用途详解
    目录1.区分形参和变量同名时:2.return *this返回函数本身总结先说结论: 1.形参和变量同名时,可用this指针来区分 2.在类的非静态成员函数中返回本身,可用retur...
    99+
    2024-04-02
  • C++中的this指针有什么用
    这篇文章主要介绍“C++中的this指针有什么用”,在日常操作中,相信很多人在C++中的this指针有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++中的this指针有什么用”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • c++中this指针的用法详解
    this 指针是 c++ 中的特殊指针,指向当前对象实例,用于访问成员变量、调用成员函数,传递给其他函数,限制对成员的访问,以及与其他指针区分。 this 指针在 C++ 中的用法 t...
    99+
    2024-05-08
    c++
  • C语言中关于指针变量的坑
    先看一个初始化带头结点单链表的例子,LNode是结点变量,LinkList是结点指针变量,等同于LNode* typedef struct LNode{ // 定义单链表节点类...
    99+
    2024-04-02
  • C语言简明介绍指针的使用
    目录1. 指针类型2. 野指针3. 指针的运算3.1 指针+-整数3.2指针-指针3.3 指针的关系运算4. 指针数组1. 指针类型 指针以字节为单位; 指针类型决定了解引用时能访问...
    99+
    2024-04-02
  • C++中类的this指针怎么使用
    这篇“C++中类的this指针怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中类的this指针怎么使用”文章吧...
    99+
    2023-06-29
  • WordPress入门指南:简单易懂的介绍
    随着互联网的不断发展,搭建个人博客或企业网站已经变得越来越简便易行。而在众多网站搭建工具中,WordPress作为一个内容管理系统,备受青睐。本文将为大家提供一个WordPress入门...
    99+
    2024-02-29
    指南 入门
  • JS中的this指向问题详细介绍
    这篇文章主要介绍“JS中的this指向问题详细介绍”,在日常操作中,相信很多人在JS中的this指向问题详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS中的this...
    99+
    2024-04-02
  • 如何进行C++函数指针的内容介绍
    如何进行C++函数指针的内容介绍,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C++语言的原始版本是由C语言的一种叫C with Class的***版本演化而来的。之所以叫C+...
    99+
    2023-06-17
  • C++程序的函数指针实际操作介绍
    这篇文章主要介绍“C++程序的函数指针实际操作介绍”,在日常操作中,相信很多人在C++程序的函数指针实际操作介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++程序的函数指针实际操作介绍”的疑惑有所帮助!...
    99+
    2023-06-03
  • C++深入浅出讲解隐藏this指针的用法
    目录1.this指针的引出2.this指针的特性3.练习一下本篇文章我们将一起讨论在有趣的知识点--隐藏的this指针。本篇我们要使用到之前我们所学习到的C++类与对象,如果有各位小...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作