折腾了一晚上,还是问一下高手吧:Delphi中构造函数的多态如何实现啊?也就是下面这段C++代码在Delphi中该如何写?public class MyClassA //这个类是一个窗体类
{
 public MyClassA(){}
 public MyClassA(int iCount){//other codes}
}我在程序中两个构造函数在不同地方都要用到我Overload了一个构造函数,通过构造函数传递一些参数;但是在程序的另外一个地方需要一个不传递函数的构造函数去实例化一个类,不知道这个怎么弄啊?
我在Delphi里这样写好像不行:
Type
 MyClass=class(TClass)
  constructor Create;overload;    //这里是不是已经把默认的构造函数或者其他什么东西给覆盖了????
  constructor Create(i:integer);overload; //传递参数在实现代码段:
 constructor MyClass.Create  
 begin
 inherited Create; //我以为这样就可以继承父类的构造函数,给我create一个窗体出来,结果报错
end;               //说我这个Create函数hide了基类的虚方法 constructor MyClass.Create(i:integer)
 begin
 //my codes
 end;问了很多人,找了很多资料了,感觉在Delphi中对构造函数关注得不多,CSDN也就搜出两个帖子,大家帮个忙,我是新手!问题解决立马结帖!

解决方案 »

  1.   

    虽然我要实现的功能可以通过overload一个构造函数,多加一个标识符就可以解决问题,但是感觉好像不怎么专业啊,而且也想了解一下Delphi中实现构造函数多态的方法跟C++中有什么不同。
      

  2.   

    overide也没有用,根本跟继承就没什么关系
      

  3.   

    错了,呵呵是覆盖了父类的方法,这样没问题unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  TMyForm1 = class(TForm1)  public
        constructor Create; overload;
        constructor Create(I: Integer); overload;
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TMyForm1 }constructor TMyForm1.Create;
    begin
      inherited Create(nil);end;constructor TMyForm1.Create(I: Integer);
    begin
      inherited Create(nil);end;procedure TForm1.Button1Click(Sender: TObject);
    var
      A: TMyForm1;
    begin
      A := TMyForm1.Create(1);
      A.Show;
    end;end.
      

  4.   

    楼上的方法可以
    你能告诉我两个答案吗?
    1:nil在这里起什么作用?
    2:为什么在Create之后还要show才能弹出窗体,之前我是没有用show这个方法就可以出来窗体
    谢谢!