Delphi的接口陷阱
现在我所知的有两大陷阱:
陷阱一、接口的类型转换陷阱
a) 不能把一个对象引用强制转换成这个引用的类型没有声明实现的接口,即使这个对象实际实现了这个接口(呵呵,优点拗口)。
b) 当把一个对象变量赋给一个接口变量,在把这个接口变量赋还给对象变量时,这个对象变量的地址已经变了,也就是不再是原来的对象了,而是指向一个错误的地址。
例如:
I1 = interface
function Do: Boolean;
end;
TC1 = Class
ATT1: Integer;
end;
TC2 = Class(TC1, I1)
ATT2: Integer;
function Do: Boolean;
end;
Intf1: I1;
OBJ1: TC!;
OBJ2: TC2;
OBJ2 := TC2.Create;
OBJ1 := OBJ2.
I1(OBJ2).DO;正确。
I1(OBJ1).DO;编译失败。
因为OBJ1的类型TC1
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



