Visual C++ POSITION用法解释,POSITION是什么?

转载 2015年07月10日 13:26:28

POSITION是MFC模板类库中经常使用的一个数据类型,我们从它的定义可以看出,其实,它就是一个指针。

// abstract iteration position

struct __POSITION { };

typedef __POSITION* POSITION;

MFC给出的注释是:一个抽象的迭代位置,既然是抽象,也就是没有给定具体的数据类型,以满足不同的模板参数的需要。

在CList中,经常会用到POSITION作为引用参数,或者作为返回值。下面,我们就举2个简单的例子,来帮助大家理解这个数据类型,不过在此之前,我要啰嗦一下,因为有很多人对__POSITION这个空结构体,表示怀疑,似乎这成为了他们理解的障碍。既然是一个空的结构体,怎么能用它来定义指针呢?

其实,C++编译器,不会将一个空的结构体完全看成是空的,编译器会为它分配1byte的内存,其实说白了__POSITION这个结构体,就相当于一个unsigned char的类型,所以__POSITION也就相当于是unsigned char,也就是Windows里面的BYTE类型,从而POSITION也就有了一个可以等价的形式,那就是BYTE*。

我们举CList中2个典型的成员函数作为讲解的重点,当然,大家应该知道CList是一个链表数据结构。下面看这两个函数:

1. POSITION GetHeadPosition() const;

显而易见,这个函数,是用来获取链表头的,它的返回值是一个POSITION,其实也就是一个指针。这个指针代表了谁?当然,就是你一直想要的链表头在链表中的指针,这个指针是new出来的,你绝对不能擅自的将这个指针delete掉。

2. TYPE& GetAt(POSITION position);

这个函数,看起来,比较怪。它的唯一的入参是一个指针,其实,有可能就是你刚刚用GetHeadPosition获得的头节点指针。这个函数的意思,也就是,需要你提供一个节点的地址,然后,CList会遍历整条链,去寻找并返回符合这个地址的节点数据。

废话了那么多,一言以蔽之,毕其功于一役,换句话说就是:

POSITION,你可以把它看成是一个学号,有了它,你就可以找到任何一个你朝思暮想的小美眉了。

POSITION用法解释

POSITION是MFC模板类库中经常使用的一个数据类型,我们从它的定义可以看出,其实,它就是一个指针。 // abstract iteration position struct __POSIT...
  • L_Andy
  • L_Andy
  • 2013年12月23日 18:55
  • 6669

MFC学习(01) 矩形框选择移动三角形 (VS2015版本)

MFC学习(01) 矩形框选择移动三角形 (VS2015版本) 小注:这是一次计算机图形学的课后作业,作业原文:给定三角形(顶点坐标自己给定,不一定非要画三角形,画多于3个顶点的平面图形也可以),...

MFC总结(15) --- 实现图片移动 小火箭简单效果

原理:借助定时器,让图片不断向上移动,当发射完毕后让图片回归到原始位置。 先上效果图,效果如下图: 1、创建一个MFC项目,将bmp导入工程         2、在默认窗口上...

C++、Visual C++、MFC(编译和封装)之间的关系是什么?

https://www.zhihu.com/question/20772069 C++、Visual C++、MFC(编译和封装)之间的关系是什么? 陈良乔,http://www.ch...

该如何正确的使用position属性它的作用是什么?

Position的英文原意是指位置、职位、状态。也有安置的意思。在CSS布局中,Position发挥着非常重要的作用,很多容器的定位是用Position来完成。   Position属性有四个可...

直接写position:absolute,后面不加top和left等值,是什么意思?分两种情况

用Div+CSS进行网站布局时,做一些浮动层等特殊特殊效果时要考虑到定位问题。 这就要用到Position属性等。 Position属性有四个值:static、fixed、absolute...

粘性定位position:sticky用法,手机移动设备:flex布局

悬浮样式

JQ之 offset 和 position 的用法与区别

offset:获取元素相对于文档(document)的当前坐标 注意 使用offset()方法不管该元素如何定位,也不管其父元素如何定位,都是获取的该元素相对于当前视口的偏移。 pos...

css关于position属性的用法(绝对定位和相对定位的混淆)

挺久没用,有点忘了关于position这个属性的用法,导致在练手的时候又犯了跟最开始新手才会犯的错误,那就是absolute和relative的用法。 在此首先看一下官方对这两个属性值的解释: ...

background-position 用法详细介绍

语法: background-position : length || length background-position : position || position 取值: length...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visual C++ POSITION用法解释,POSITION是什么?
举报原因:
原因补充:

(最多只允许输入30个字)