什么是类属子程序?

什么是类属子程序?,第1张

类属子程序即子程序为类属单元。下面通过一个 Swap 的例子来讲解:

000 -- filename:Swap.adb

001 with Ada.Integer_Text_IOuse Ada.Integer_Text_IO

002 procedure Swap is

003 generic

004type Element_Type is private

005procedure Generic_Swap(Left, Right : in out Element_Type)

006procedure Generic_Swap(Left,Right:in out Element_Type) is

007Temporary : Element_Type

008begin

009Temporary := Left

010Left := Right

012Right := Temporary

013end Generic_Swap

014 procedure Swap is new Generic_Swap(Integer)

015A, B : Integer

016 begin

017A := 5

018B := 7

019Swap(A, B)

020 end Swap

[003]-[004] 声明一个类属数据类型 Element_Type,[005]声明一个类属子程序 Generic_Swap,它的参数是类属类型(generic type),[006]-[013] 是 Generic_Swap 函数的具体实现。但这些还不够,Element_Type 并不是什么整型、浮点型等具体数据类型,只是抽象意义上的类属类型,为形式参数。因此还需要[014] 创建实际的子程序 Swap,这里的 Integer就是一个实际参数,表示 Swap 能接受 Integer 类型的参数,这个步骤称之为实例化。当然为了可以交换浮点等其它数据类型,也可以再添加:

procedure Swap is new Generic_Swap(Float)

procedure Long_Swap is new Generic_Swap(Elementary =>Long_Integer)

...

基于类属子程序的实际程序的数目从理论上讲没有限制。重名的子程序在使用时由编译器自动区分。从这个例子,大家应该明白了类属单元的好处--实际应用中省了很多重复的工作。

类不是这样用的

类要先声明变量

新建一个变量(变量1)为这个类,就像声明某个变量为整数型,文本型一样。类的名称是你所谓的子程序的上一级,然后

变量1.你所谓的子程序()

我晕手机打字真慢

模块里面基本是这些:

子程序    (直接调用,有些有参数请注意加入)

类          (也就是自定义数据,在窗口程序集里面插入变量,依次输入名字和自定义类型)

支持库  (直接安装)

常量     (#常量  可直接使用)

资源       (#资源  可直接使用)

DLL        (在DLL里面直接插入就可调用)

-----------------------------------------

看懂了吧?

-------------------------------------------

现在外挂制作的主流数据分析是OD+CE+CALL+HOOK

封包早就已经淘汰。。。。。

-------------------------------------

回答完毕


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11400483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存