当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 > 第6章 MFC基础知识 > 6-2 C++的基本知识 > 6-2-9 指针
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频列表
this指针
this指针是指向一个类的对象的地址
this是一种隐含指针
它隐含于每个类的成员函数之中
也就是说
每个成员函数都有一个this指针变量
this指针指向该成员函数所属的类的对象
当定义一个类的对象时
该对象的成员均含有由系统自动产生的
指向当前对象的this指针
成员函数访问类中成员变量的格式就是
this指针
一个箭头
成员变量
请大家注意这个箭头不是键盘上的上下左右的箭头
而是一个“减”号和一个“大于”号
当一个对象调用成员函数时
该成员函数的this指针便指向这个对象
若不同的对象调用同一个成员函数
C++编译器将根据成员函数的this指针所指向的
不同对象类确定应引用哪一个对象的数据成员
也就是说
每一个对象都有一个地址
而this指针所指的就是这个地址
这个问题大家可以复习一下你们学习C语言的时候
有关指针那一章的内容
概念是一致的
和其他数据类型一样
程序中也可以定义指向类对象的指针
在定义了类的指针后
还必须为其分配内存才能使用
类对象的指针定义及分配内存空间的一般格式是这样的
我们用new关键字为这个类定义一个指针
指针的名字
这个也是类的名
下面的语句我们就是定义了类student对象指针
并为它分配内存
那这个类student这是一个student类
指针是student1指针
那就是new Student
要返回的指针就是student类的指针
当通过类对象的指针访问类的成员时
通常可以使用运算符
一横杠一个大于号 这个运算符
叫指向
例如下面的程序中
主函数通过指向类对象的指针调用类的成员函数
大家跟我一起看一下这个代码
在这里定义了一个类叫Class1
它的私有成员叫Value
它的公共成员
public部分有这些
这里有个Class1的函数
大家可以回忆一下前面介绍的构造函数
因为它的函数的名跟类的名字一致
所以这个Class1在这里就是构造函数
它有一个整型的参数int Val
然后Val值直接就赋给了这个Value
实际上就是构造函数大家知道是承担着初始化的任务
所以这时候就把Val对这个私有成员进行了初始化
而这个GetValue返回的值就是一个Value的值
那这是获取类对象成员变量的值
那我们接着往下看主函数
那定义了Class1的一个函数叫做Object1
给的值是三个8
然后定义了一个Class1类型的指针
那么这个指针是指向这个Class1类的对象
那这个时候这个指针跟Object1目前还没有关系
这个指针是指向Class1的对象
而这个Object1返回值的类型也是Class1的对象类型
所以我们就把这个函数的入口地址取出来
赋给这个p
那么这个指针就指向了Object1
那么这个指针GetValue实际上
因为我这个p指针已经指向了Object1
那么这个时候p.GetValue已经把Object1的参数
p的值已经指向这个参数了
然后就是把这个值赋了三个8的值return
通过GetValue来return
那初始化过程中呢
因为这个构造函数里面我们给了Val值
是对成员变量初始化
那么在这里它初始化的值呢
就是三个8
所以这时候我们调用了GetValue返回值
这个Val值就是三个8
这时候大家看到运行的结果是三个8
-讨论实录
--0-0
-6-1 MFC概述
-6-2 C++的基本知识
--6-2-1 类
--6-2-2 对象
--6-2-6 重载
--6-2-9 指针
-6-3 MFC类的组织结构及主要的类的简介
--6-3-2 根类
-6-4 MFC中全局函数和全局变量
-7-1 概述
--7-1-1
--7-1-2
-7-2 按钮控件及其应用
--128B12447816EEF99C33DC5901307461
-7-3 按钮控件及其应用
--7-3
-7-4 静态控件
--7-4
-7-5 列表框控件
--7-5-1
--7-5-2
-7-6 编辑框控件
--7-6
-7-7 组合框控件
--7-7
-7-8 对话框通用控件
--7-8-1
--7-8-2
-讲义源代码
--html
-8-1&2 资源的应用以及菜单资源的使用
--8-1-1
--8-1-2
-8-3 快捷菜单的创建及其应用
--8-3
-8-4 加速键资源的创建及其使用
--8-4
-8-5 工具条资源的创建及其使用
--8-5
-8-6 字符串资源的使用
--8-6
-8-7 位图资源的创建及其使用
--8-7
-课堂示例源代码
--html
-第一次作业内容及要求
--html
--第一次作业及答题链接--作业
-9-1 概述
--9-1
-9-2 Doc/View框架的主要成员
--Video
-9-3 文档操作中的一些重要概念
--Video
-9-4 SDI编程实例
--Video
-9-5 MDI编程实例
--9-5-1
--9-5-2
-课堂示例源代码
--html
-第二次作业内容及要求
--html
--第二次作业及答题链接--作业
-10-1 利用音频函数实现多媒体程序设计
--10-1-1
--10-1-2
--10-1-3
--10-1-4
-10-2 利用Windows Media Player控件实现多媒体程序设计
--10-2
-课堂示例源代码
--html
-例11-1
--例1
-例11-2
--例11-2
-例11-3
--例11-3
-例11-4
--例11-4
-11-1 ODBC介绍与引用
--11-1
-课堂示例源代码
--html
-第三次作业及答题链接