句柄类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是私有成员,并不代表不在发挥作用。

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

另外,不能直接被你看到

Cloudxtiny:£1.5/月,KVM-512MB/100GB/英国机房

Cloudxtiny是一家来自英国的主机商,提供VPS和独立服务器租用,在英国肯特自营数据中心,自己的硬件和网络(AS207059)。商家VPS主机基于KVM架构,开设在英国肯特机房,为了庆祝2021年欧洲杯决赛英格兰对意大利,商家为全场VPS主机提供50%的折扣直到7月31日,优惠后最低套餐每月1.5英镑起。我们对这场比赛有点偏见,但希望这是一场史诗般的决赛!下面列出几款主机套餐配置信息。CPU...

趣米云月付460元,香港CN2云服务器VPS月付低至18元

趣米云早期为做技术起家,为3家IDC提供技术服务2年多,目前商家在售的服务有香港vps、香港独立服务器、香港站群服务器等,线路方面都是目前最优质的CN2,直连大陆,延时非常低,适合做站,目前商家正在做七月优惠活动,VPS低至18元,价格算是比较便宜的了。趣米云vps优惠套餐:KVM虚拟架构,香港沙田机房,线路采用三网(电信,联通,移动)回程电信cn2、cn2 gia优质网络,延迟低,速度快。自行封...

RangCloud19.8元/月,香港cn2云主机,美国西雅图高防云主机28元/月起

rangcloud怎么样?rangcloud是去年年初开办的国人商家,RangCloud是一家以销售NAT起步,后续逐渐开始拓展到VPS及云主机业务,目前有中国香港、美国西雅图、韩国NAT、广州移动、江门移动、镇江BGP、山东联通、山东BGP等机房。目前,RangCloud提供香港CN2线路云服务器,电信走CN2、联通移动直连,云主机采用PCle固态硬盘,19.8元/月起,支持建站使用;美国高防云...

句柄类为你推荐
sdf什么是SDF混淆矩阵两个矩阵相似可以得出什么bloomfilter电脑游戏图像设置里的Bloom是什么意思?weakhashmapWeakHashMap和HashMap的区别md5值md5值什么用最开放的浏览器目前最好的游览器?网关和路由器的区别网关和路由器的区别是什么mindmanager破解版求亿图mac破解版百度云!!!mindmanager破解版谁有MindManager破解版的slideshare幻灯片的占位符的作用是?
成都主机租用 最便宜虚拟主机 花生壳免费域名 已经备案域名 net主机 阿里云搜索 singlehop 名片模板psd tightvnc 国外空间 英文站群 个人免费空间 40g硬盘 中国电信测速112 qingyun 电子邮件服务器 怎么测试下载速度 工作站服务器 hostloc 万网空间购买 更多