const HANDLE真的是常量吗?

时间:2012-12-11 22:38:24

标签: c++ windows visual-c++ handle

据我所知,HANDLE只是一个数字,指的是某种“系统资源表”。这个句柄是否正确?我想不是因为它只是用来访问像数组上的索引一样的表。位图的一个例子:我可以改变位图的内容,而不管HBITMAP被声明为const吗?

1 个答案:

答案 0 :(得分:3)

HANDLE是(AFAIR)int的typedef,因此const HBITMAP与const int相同。

从这个意义上讲,即使位图的句柄是const,也可以更改位图的内容,因为const引用句柄而不是实际的位图(将其视为指向变量类的const指针。)

BUT:

你的问题无论如何都是没有意义的,因为:

  • 句柄是Win32 API的一个特性,它是一个C api而不是C ++(并且在C获得const之前创建)。
  • 无论如何,您无法直接更改位图(或任何其他"对象"由句柄表示)。句柄是对Win32结构的不透明引用,只能通过用于处理(没有双关语)"对象"的适当Win32 API调用来操作。

我放置"对象"在引号中因为Handles引用概念对象(概念的软件表示)而不是实际的C ++对象,因为Win32是一个C API。

相关问题