• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 深度理解c++中的this指针

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了深度探索c++对象模型,c++求二叉树的深度,c++深度优先搜索,图的深度优先遍历c++,深度理解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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必须写,当然有一定基础的程序员才不会这么写呢。

</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++对象内存分布详解(包括字节对齐和虚函数表)
  • 深入理解C++的对象模型
  • 深度理解c++中的this指针
  • C++中对象的常引用、动态建立和释放相关知识讲解
  • C++ 多重继承和虚拟继承对象模型、效率分析
  • C++内核对象封装单实例启动程序的类
  • C++中的常对象与常对象成员详解
  • C++中对象的常引用总结
  • C++中对象的赋值与复制操作详细解析
  • c++ 临时对象的来源

相关文章

  • 2017-05-28C++输出斐波那契数列的两种实现方法
  • 2017-05-28大数(高精度数)模板(分享)
  • 2017-05-28C++中sting类的简单实现方法
  • 2017-05-28C语言编程中借助pthreads库进行多线程编程的示例
  • 2017-05-28C++设计模式编程中的迭代器模式应用解析
  • 2017-05-28c语言链表操作示例分享
  • 2017-05-28基于select、poll、epoll的区别详解
  • 2017-05-28深入解析C++编程中的运算符重载
  • 2017-05-28深入C++四种强制类型转换的总结
  • 2017-05-28C++如何调用matlab函数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 简单谈谈C++ 中指针与引用
    • c语言二进制数按位输出示例
    • C语言实现两个递减数列中寻找某一个数
    • C语言数据结构中串的模式匹配
    • C++实现简单的学生管理系统
    • 详解C++编程中的主表达式与后缀表达式编写基础
    • c语言实现多线程动画程序示例
    • 51Nod 1118 机器人走方格(dp/快速幂)
    • Find K-th Smallest Pair Distance:查找数组元素中差值第K大的两个元素的差值
    • C语言中的隐式函数声明

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有