Delphi – 如果没有创建类,为什么这个函数有效?

Delphi – 如果没有创建类,为什么这个函数有效?,第1张

概述考虑这个课程: unit Unit2;interfacetype TTeste = class private texto: string; public function soma(a, b: integer): string; end;implementationprocedure TForm2.Button1Click(Sender: TOb 考虑这个课程:

unit Unit2;interfacetype  TTeste = class  private    texto: string;  public    function soma(a,b: integer): string;  end;implementationprocedure TForm2.button1Click(Sender: TObject);var  teste: TTeste;begin  teste:= nil;  teste.texto:= '';//access violation  showmessage(teste.soma(5,3));//no access violationend;{ TTeste }function TTeste.soma(a,b: integer): string;begin  result:= (a+b).ToString;end;end.

它真的有效吗?为什么? var崩溃了但功能没有,它是否像类功能一样工作?

解决方法 这是有效的,因为您没有尝试访问该类的任何字段.该功能不需要任何内存分配.如果在该函数中使用了字段texto,那么它会崩溃(正如您在其他测试中看到的那样),因为该内存未被解决.但在这里,没有涉及的记忆. a和b(以及该问题的函数结果)都分配在类之外的其他地方.实例化过程的一部分是为对象中的每个字段分配内存.

这只是巧合.实际上使用这样的东西仍然非常气馁.如果您觉得需要在没有实例化的情况下访问该函数,那么您应该将其设置为类函数.

总结

以上是内存溢出为你收集整理的Delphi – 如果没有创建类,为什么这个函数有效?全部内容,希望文章能够帮你解决Delphi – 如果没有创建类,为什么这个函数有效?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1272511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存