句柄类c++ primer 第15章 句柄类 Sales_item 到底有什么用,要怎么调用这个类呢?

句柄类  时间:2021-07-06  阅读:()

句柄是什么东西?

在程序设计中,句柄(handle)是一种特殊的智能指针。

当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。

句柄与普通指针的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。

这种间接访问对象的模式增强了系统对引用对象的控制。

通俗的说就是我们调用句柄就是调用句柄所提供的服务,即句柄已经把它能做的操作都设定好了,我们只能在句柄所提供的操作范围内进行操作,但是普通指针的操作却多种多样,不受限制。

句柄是什么

句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。

有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一 (如线程句柄,全局的有另一个标识符)。

详细的可分为许多种,都是以H开头的。

在VB中使用时全部都用Long。

常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM), 文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT), 区域句柄(HRGN)等等。

在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。

而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释 放。

> 如果只用VB本身的代码一般是不会用到句柄的,但要是使用API函数的话, 大多数会使用。

再Windows系统中,句柄(我一直觉得这个词翻译得特别别扭)分为三大类:Kernel Handle、UserHandle和应用程序自定义的Handle。

KernelHandle实际上是进程内Kernel对象的指针表索引,Kernel对象包括进程、文 件、信号等。

但是MS为了掩盖着一事实,在系统启动时生成了一个所谓Obsfucator的值 (其实应该是Obfuscator,MicrosoftBugs(R):),生成Handle后将Handle与这个值异 或后返回给应用程序,所以看到的Handle都是一些很大而且毫无意义的数字。

这些 Handle和索引的对象是由KRNL32.DLL和VMM32.VXD共同管理的,所以称之为Kernel Handle。

UserHandle是用来标示窗口、DC等对象的,他们是真实的指针,但指向的并不是对象 的开头,有一个偏移量。

同样,这些对象是由USER32.DLL管理的。

第三种Handle不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关

什么是句柄,常用的句柄有什么,使用句柄的好处是什么?

#include<iostream.h> #include<string.h> class person { protected: char *name; int age; public: person(); person(char*sname,int sage); ~person(); void show(); }; person::person() { name=new char[10]; strcpy(name,"no name"); age=0; cout<<"person类的无参构造函数"<<endl; } person::person(char *sname,int sage) { name=new char[strlen(sname)+1]; strcpy(name,sname); age=sage; cout<<"person类的有参构造函数已经执行"<<endl; } person::~person() { delete[]name; cout<<"person类的析构函数已经执行"<<endl; } void person::show() { cout<<"姓名:"<<name<<" "<<"年龄:"<<age<<" "; } class student:public person { protected: int no; public: student(); student(char *sname,int sage,int no); ~student(); void show(); }; student::student() { no=0; cout<<"student类的无参构造函数已经执行"<<endl; } student::student(char *sname,int sage,int sno):person(sname,sage) { no=sno; cout<<"student类的有参构造函数已经执行"<<endl; } student::~student() { cout<<"student的析构函数已经执行"<<endl; } void student::show() { person::show(); cout<<"学号:"<<no<<endl; } void main() { person p1; p1.show(); cout<<endl; person p2("zhao",30); p2.show(); cout<<endl<<endl; student s1; s1.show(); student s2("qian",18,5001); s2.show(); cout<<endl; } PS 我也是青大的学生 有了答案当然要分享了

c++ primer 第15章 句柄类 Sales_item 到底有什么用,要怎么调用这个类呢?

怎么可以在main函数里调用?只能在类定义内部使用private: Item_base *p; p是私有成员,并不代表不在发挥作用。

当多个指针同时指向一个对象,如果没有智能指针。

另外,不能直接被你看到

易探云:买香港/美国/国内云服务器送QQ音乐绿钻豪华版1年,价值180元

易探云产品限时秒杀&QQ音乐典藏活动正在进行中!购买易探云香港/美国云服务器送QQ音乐绿钻豪华版1年,价值180元,性价比超级高。目前,有四大核心福利产品推荐:福利一、香港云服务器1核1G2M,仅218元/年起(香港CN2线路,全球50ms以内);福利二、美国20G高防云服务器1核1G5M,仅336元/年起(美国BGP线路,自带20G防御);福利三、2G虚拟主机低至58.8元/年(更有免费...

盘点618年中大促中这款云服务器/VPS主机相对值得选择

昨天有在"盘点2021年主流云服务器商家618年中大促活动"文章中整理到当前年中大促618活动期间的一些国内国外的云服务商的促销活动,相对来说每年年中和年末的活动力度还是蛮大的,唯独就是活动太过于密集,而且商家比较多,导致我们很多新人不懂如何选择,当然对于我们这些老油条还是会选择的,估计没有比我们更聪明的进行薅爆款新人活动。有网友提到,是否可以整理一篇当前的这些活动商家中的促销产品。哪些商家哪款产...

俄罗斯vps主机推荐,怎么样俄罗斯vps俄罗斯vps速度怎么样?

俄罗斯vps速度怎么样?俄罗斯vps云主机节点是欧洲十大节点之一,地处俄罗斯首都莫斯科,网络带宽辐射周边欧洲大陆,10G专线连通德国法兰克福、法国巴黎、意大利米兰等,向外连接全球。俄罗斯vps云主机速度快吗、延迟多少?由于俄罗斯数据中心出口带宽充足,俄罗斯vps云主机到全球各地的延迟、速度相对来说都不错。今天,云服务器网(yuntue.com)小编介绍一下俄罗斯vps速度及俄罗斯vps主机推荐!俄...

句柄类为你推荐
联想网盘联想网盘收费吗,怎么样ruby语言ruby什么意思?什么含义?faq是什么意思在国际贸易中“FAQ”代表的是什么意思数据分析报告范文如何做一个好的数据分析报告新手怎么制作表格如何学会制作表格?mergecellsExcel 合并及计数宏 VBAwatch的过去式watch的过去式能不能加三单形式?文件系统类型windows 操作系统的文件系统具体有哪几种数学作业不知道数学作业怎么办?mac地址过滤怎么设置mac地址过滤 急
合肥虚拟主机 山东vps 如何申请免费域名 本网站服务器在美国维护 云网数据 国内免备案主机 美元争夺战 xen 网站被封 e蜗 河南移动邮件系统 200g硬盘 国外代理服务器软件 1g空间 最好的qq空间 中国电信宽带测速网 metalink yundun 帽子云排名 免费php空间 更多