IDL对象编程手记

来源:互联网 发布:倚天屠龙指标源码破解 编辑:程序博客网 时间:2024/05/16 04:49

IDL支持面向对象的编程, 但是并不完整, 不支持对成员的可见性的设定.

可以通过定义单独文件的方式来定义IDL类, 比较容易管理, 定义的方式是:
pro <ClassName>__define
 struct = {<className>, ...}
end
文件名是:<ClassName>__define.pro
在这个文件中, 还可以添加类成员函数的定义, 如:
pro <className>::hello
 ...
end
IDL不区分大小写, 所以类名/函数名/关键字等均可以不受大小写的限制
IDL对类提供一些专门的成员函数, 完成专用的任务. 比如: INIT为构造函数, CLEANUP为析构函数(在对象被释放时调用, 比如OBJ_DESTROY函数). 但是这些函数不能在外部被调用, 但是可以在函数内部看到, 主要是为了手工调用, 以实现父类的初始化函数被调用(IDL不会自动调用父类的INIT函数)

INIT函数可以带参数, 可以在调用OBJ_NEW生成对象时传入.
OBJ_NEW函数的调用形式如下:
Result = OBJ_NEW( [ObjectClassName [, Arg1......Argn]] )

IDL的函数和过程参数可以不完整, 比如函数A定义了5个参数, 可以用0-5个参数来调用. 对调用的参数情况可以用N_PARAMS和N_ELEMENTS来判断, 前者可以得到实际的调用参数的个数, 后者可以判断某个参数是否有值
sub Test::INIT, caption
    print, N_PARAMS() ;返回参与调用的参数个数
    print, N_ELEMENTS(caption) ;返回1为有值, 返回2为未定义
    ...
end

可以定义多个同名函数, 但只有最晚定义的那个有效, 前面的会被隐藏

原创粉丝点击