大家好,第一个问题是Static和Register是什么意思. 官方文档没找到这两个说明. 我同事定义了一个class function, 然后又加上static和register, 就是这样
class function Fun():Integer; static; register; inline;
请大拿们解释一下. class为什么还要加Static呢?不懂. register是神马意思呢?另外一个关于编译问题的, 我在父类声明了一个abstract virtual的方法, 为神马我在子类不实现没有编译错误呢?!谢谢!
M.
class function Fun():Integer; static; register; inline;
请大拿们解释一下. class为什么还要加Static呢?不懂. register是神马意思呢?另外一个关于编译问题的, 我在父类声明了一个abstract virtual的方法, 为神马我在子类不实现没有编译错误呢?!谢谢!
M.
这些官方文档都有,不知道你咋查的,或者你查的哪家的官方static关键字是delphi 2007 还是 2009之后加入的,老版本的delphi没有
http://docwiki.embarcadero.com/RADStudio/XE4/en/Static
这个这样不好吧!比如
type A = class
protected
function getName(): widestring; virtual; abstract;
public
procedure ShowName(); // call getName
end
type B = class(A), 我B不实现getName, 编译过来, 运行时才报错, 这样不爽吧谢谢!
M.
那跟class function有什么区别吗? class function不是也是静态方法的意思么.M.
这个这样不好吧!比如
type A = class
protected
function getName(): widestring; virtual; abstract;
public
procedure ShowName(); // call getName
end
type B = class(A), 我B不实现getName, 编译过来, 运行时才报错, 这样不爽吧谢谢!
M.
怎么不爽了?抽象类难道一定就是完全抽象的吗?抽象类也可以有自己的功能,不然他和接口有什么不同吗?!!
这个这样不好吧!比如
type A = class
protected
function getName(): widestring; virtual; abstract;
public
procedure ShowName(); // call getName
end
type B = class(A), 我B不实现getName, 编译过来, 运行时才报错, 这样不爽吧谢谢!
M.
怎么不爽了?抽象类难道一定就是完全抽象的吗?抽象类也可以有自己的功能,不然他和接口有什么不同吗?!!
俺说的是纯虚函数呢, 不实现不报错当然不爽了.
那跟class function有什么区别吗? class function不是也是静态方法的意思么.M.区别在于static方法不能被override
这个这样不好吧!比如
type A = class
protected
function getName(): widestring; virtual; abstract;
public
procedure ShowName(); // call getName
end
type B = class(A), 我B不实现getName, 编译过来, 运行时才报错, 这样不爽吧谢谢!
M.
怎么不爽了?抽象类难道一定就是完全抽象的吗?抽象类也可以有自己的功能,不然他和接口有什么不同吗?!!
俺说的是纯虚函数呢, 不实现不报错当然不爽了.抽象类指的就是含有纯虚函数的类
type
TA = class
function foo: Integer; virtual; abstract; // strict
end;
TA1 = class(TA) end;
.....var
a: TA1;
begin
[Warring]Unit1.pas(30): Constructing InstanceSize of 'TA1' containing abstract method 'TA1.foo'
a := TA1.Create; // 报警但不报错,因为不是错[/code]