【问题标题】:Constructor inheritance issue构造函数继承问题
【发布时间】:2010-08-04 12:01:55
【问题描述】:

我有两个类,一个基类和一个派生类。我的基类有一个这种形式的构造函数:

constructor TBaseClass.CreateFromXML(ANode: IXMLNode);
begin

  Create;

  //Set members from XML

end;

我的派生类有一个这种形式的构造函数:

constructor TDerivedClass.Create;
begin

   FDatabaseID = -1;

end;

我的问题是,当我使用基类 [TDerivedClass.CreateFromXML(Node);] 的构造函数创建派生类的对象时,在 CreateFromXML 构造函数开头调用的 Create 不是派生类中的对象,而是一个由我的基类从 TObject 继承。

是否有可能让基类构造函数调用我的派生类构造函数,即使它进一步“向下”继承链?

【问题讨论】:

  • 如果您需要派生代码在创建期间的某个时间执行,您可能应该只使用一个事件。这比试图提供派生类的基类知识更优雅。

标签: delphi


【解决方案1】:

尝试在 TBaseClass 中声明 constructor Create; virtual;。不要忘记将“派生”构造函数标记为override

【讨论】:

  • 就这样,谢谢。很久没有遇到这种情况了;谢谢提醒!
猜你喜欢
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
相关资源
最近更新 更多