这很明确啊,Delphi底下有一个关键字叫做override,意为覆盖,由于你的TSub是TMy的子类,而两个类的constructer的定义完全一样,那么子类的Create就覆盖了父类的Create,而在Object Pascal中,被覆盖了的函数除非在后面的函数中指明了inherited关键字,就不会再被调用。除非你确认是安全的,否则不要省略关键字inherited,而且在constructor里的inhertited最好放在最前面,而destructor里的inhertited最好放在最后面。默认状态下Object Pascal里的类的成员变量全被初始化为0或nil,这就是你得到0的原因
在DELPHI中
constructor Tsub.Create;
begin
inherited;// 这是调用父类的建构函数
end;以C++方式之一
Tsub::Tsub()
{
Tmy::Tmy();
}
之二
Tsub::Tsub():Tmy()
{
}两者作用类似的。另外你自己学着看VCL源码,会明白很多东西的。