首页 / 知识
关于oop:如果没有显式调用,Delphi调用是否在覆盖的过程中继承
2023-04-14 19:22:00

Does Delphi call inherited on overridden procedures if there is no explicit call如果代码中没有显式调用,Delphi是否会在覆盖的过程中调用继承,即(继承;),我具有以下结构(从超类到子类) TForm >> TBaseForm >> TAnyOtherForm 项目中的所有表单都将从TBaseForm派生,因为它将具有用于每种表单(安全性,验证等)的所有标准设置和破坏性部分。 TBaseForm的代码具有onCreate和onDestroy过程,但是如果有人(例如我)忘记在TAnyOtherForm上将继承的onCreate添加到onCreate上,Delphi会为我调用吗? 我在网上找到了引用,说它不是必需的,但是如果代码中省略了它,则没有地方说它是否被调用。 另外,如果它确实为我调用了继承的功能,那么它将何时调用它? 不,如果您将调用保留为继承,它将不会被调用。否则,将无法覆盖方法并完全省略其父版本。 值得一提的是,不调用Destroy中继承的任何对象都可能导致内存泄漏。在源代码中有可用的工具来检查这一点。 必须显式进行继承的调用。通常,在等效情况下(不包括类构造函数),没有语言会自动调用继承的函数。 很容易忘记在类构造函数中进行继承的调用。在这种情况下,如果基类需要初始化任何数据,则将发生访问冲突。 也许您可以在TBaseForm类中重写DoCreate和DoDestory,以便确保无论子类的实现如何,都可以执行某些代码。
必须在后代对象以及可视形式继承中显式调用Inherited。如果您使用类完成,那么如果您将该定义标记为重写,则它将自动添加继承的内容(但不是为了重新引入)。如果您使用的是可视表单继承,则当您通过表单编辑器添加新的事件处理程序时,它也会添加继承的事件处理程序。 正如其他人所指出的那样,继承的代码不是隐式调用的。您必须显式调用它。这为您提供了一些有用的灵活性。例如,您可能想要在继承的代码之前做一些预处理代码,然后再做一些后处理代码。可能看起来像:
您必须显式调用它。这可以提供很大的灵活性,因为您可以选择在代码中的哪个位置调用继承的方法。但这也是错误的重要来源。忘记调用继承的函数很容易,并且编译器无法告诉您是故意还是忘记了。 应该有某种指令" skip_inherited"来告诉编译器您不想调用继承的方法。 如果找不到"继承"或" skip_inherited",编译器将很容易报告错误。那意味着你忘记了。但不幸的是,CodeGear中没有人想到这一点。 不,这是压倒一切的重点。 |
最新内容
相关内容
脚本调用linux命令?
脚本调用linux命令?,代码,系统,工作,底部,脚本,位置,环境,行用,官网,标准,typescript脚本中怎样运行Linux命令?1、Script可用于记录当前用户的调用函数命令linux?
调用函数命令linux?,系统,管理,网络,通用,统一,观察,地址,代码,设备,地方,怎么调用system函数,使用Android的linux命令1、int system(const chlinux拷贝覆盖命令?
linux拷贝覆盖命令?,系统,文件,信息,命令,目录,时间,基本知识,项目,数据,源文件,Linux下如何使用cp命令复制文件及复制目录1、处在当前目录复linux内核总调用命令?
linux内核总调用命令?,工作,地址,系统,信息,管理,策略,命令,目录,时间,基础,如何在Linux内核里增加一个系统调用?在一个进程中创建3个线程,名字linux编程调用命令?
linux编程调用命令?,系统,标准,管理,工作,基础知识,情况,环境,设备,基础,首页,linux下怎样用c语言调用shell命令可以通过system函数,调用shelllinux命令窗口调用?
linux命令窗口调用?,系统,工具,首页,终端,命令,数据,盘中,代码,密码,快捷键,怎么在linux中调用命令行中的命令,比如我想在一个程序中用命令行linux服务器调用命令?
linux服务器调用命令?,系统,地址,设备,标准,工作,密码,中心,盘中,网络,软件,如何通过ssh登录服务器执行linux指令1、打开windows系统中的ssh客linuxc调用命令框?
linuxc调用命令框?,系统,工作,标准,情况,设备,环境,命令,函数,语言,程序,如何在C语言编程中调用linux系统终端下的命令C语言有一个system函数(linux系统调用命令行?
linux系统调用命令行?,系统,网络,代码,密码,位置,工作,通用,平台,电脑,环境,怎么在linux中调用命令行中的命令,比如我想在一个程序中用命令行批量调用linux命令?
批量调用linux命令?,工具,下来,软件,系统,密码,地址,时间,认证,向日葵,文件,linux下批量执行.sh文件1、确保.sh文件具有执行权限:在终端中,使用llinux内核调用命令?
linux内核调用命令?,系统,工作,信息,工具,内核,命令,名称,标准,流程,网络,在linux0.12系统中编译0.12内核时,使用什么命令linux系统常用操作命linux内核态调用命令?
linux内核态调用命令?,系统,密码,名称,代码,状态,异常,内核,工作,服务,数据,应用程序调用linux内核加密函数文件、文件夹加密 zip -e linuxzgf