unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    constructor  Create(Aowner:Tcomponent;S:String);override;  //出错
  end;var
  Form2: TForm2;implementation{$R *.dfm}
 constructor TForm2.Create(Aowner:Tcomponent;S:String);
 begin
     inherited Create(AOwner);
     self.Caption:=s;
 end;
end.能不能不用reintroduce;overload限定符,请各位不同限定符,帮我搞定啊。

解决方案 »

  1.   

    type
      TForm2 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
        constructor  Create2(Aowner:Tcomponent;S:String);
      end;
    就行了
      

  2.   

    你要父类中有同一类型的构造函数,你才能覆盖(override)啊,如果父类中都没有这一类型的函数,你覆盖什么啊,没的覆盖啊。
      

  3.   

    overload是超载,你可以定义两个同名的函数,但是参数要不一样,这样的话,系统会根据你不同参数来选择究竟用哪个函数来执行的!
      

  4.   

    constructor  newCreate(Aowner:Tcomponent;S:String);
    以后创建的时候可以form2 := Tform2.newcreate(.....),你用重载是要和父类的create保持一致。
    如果不用overload,reintroduce等关键字,那你就重新定义一个create