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没有声明实现I1所以不能转换成I1,即使OBJ1确实实现了I1。还有,如果把对象转为接...[ 查看全文 ]