深度理解c++中的this指针

 更新时间:2016年07月05日 15:27:18   投稿:lqh  
这篇文章主要介绍了C++编程指向成员的指针以及this指针的基本使用指南,与C语言一样,存储的数值被解释成为内存里的一个地址,需要的朋友可以参考下。

1.this指针,就是一个指向当前对象的指针。我们知道,定义出一个类,它在内存中是不占空间的,只有定义了该类类型的对象时,系统就会为该对象分配一段存储空间,这段空间里只存储成员变量,对于成员函数,是存放在代码区的。(复习:内存分为5大区:静态区、常量区、栈、堆、代码区)。下边给出一个日期类,通过这个实例,深度理解this指针。

#define _CRT_SECURE_NO_WARNINGS 1

#include
using namespace std;

class Date 
{
public:
	void setYear(int year)
	{
		m_year = year;
	}
	void setMonth(int month)
	{
		m_month = month;
	}
	void setDay(int day)
	{
		m_day = day;
	}
	void print()
	{
		cout << m_year << "-" << m_month << "-" << m_day << endl;
	}
private:
	int m_year;
	int m_month;
	int m_day;
};
int main()
{
	Date date;
	date.setYear(2016);
	date.setMonth(7);
	date.setDay(4);
	date.print();
	system("pause");
	return 0;
}

2.参数里的this指针一般不需要写,系统会隐式将对象的首地址传给函数,但是如果要写,函数调用的时候也需要写上对象的地址,函数体中的this并不是在所有情况都可以省略,比如:(仍然使用上边的日期类)

void setYear(int m_year)
{
        this->m_year = m_year;
}

在这种情况下出现了重名,函数体的this必须写,当然有一定基础的程序员才不会这么写呢。

相关文章

  • C/C++指针与内存管理图文详解

    C/C++指针与内存管理图文详解

    这篇文章主要为大家详细介绍了C/C++指针与内存管理,使用文图并叙的方式,文中图片介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C++中的菱形继承深入分析

    C++中的菱形继承深入分析

    这篇文章主要介绍了C++中的菱形继承深入分析的相关资料,需要的朋友可以参考下
    2017-07-07
  • C++适用入门同学的模板讲解

    C++适用入门同学的模板讲解

    人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动
    2022-07-07
  • C语言之qsort函数详解

    C语言之qsort函数详解

    这篇文章主要介绍了C语言中qsort函数的用法实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2021-08-08
  • Qt 实现画线笔锋效果详细原理及示例代码

    Qt 实现画线笔锋效果详细原理及示例代码

    这篇文章主要介绍了Qt 实现画线笔锋效果详细原理及示例代码。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 深入理解C语言指针

    深入理解C语言指针

    关于指针,其是C语言的重点,C语言学的好坏,其实就是指针学的好坏。其实指针并不复杂,学习指针,要正确的理解指针
    2020-02-02
  • 详解C语言数组灵活多变的访问形式

    详解C语言数组灵活多变的访问形式

    这篇文章主要介绍了详解C语言数组灵活多变的访问形式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 探究一下C语言生成随机数的奥秘

    探究一下C语言生成随机数的奥秘

    C语言中生成随机数是一项非常重要的功能,因为许多现代应用程序需要使用随机数。本文就来带大家一起探究一下C语言生成随机数的奥秘吧
    2023-03-03
  • C++ qsort函数排序与冒泡模拟实现流程详解

    C++ qsort函数排序与冒泡模拟实现流程详解

    qsort是一个库函数,基于快速排序算法实现的一个排序的函数,下面这篇文章主要给大家介绍了关于C语言qsort()函数使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • C语言中的链接编写教程

    C语言中的链接编写教程

    这篇文章主要介绍了C语言中的链接编写教程,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08

最新评论