Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > иницил. данных в конструкторе перед inherited


Автор: Delphist 10.3.2009, 19:21
Скажите, пожалуйста, можно ли в конструкторе Create наследника TClientServerSocket проводить инициализацию данных перед inherited ну т.е. вот так:

Код

type
  TClientThread = class(TServerClientThread)
...
constructor
  TClientThread.Create(AServer: TServer; ACreateSuspended: Boolean;
  ASocket: TServerClientWinSocket);
begin

  FServer := AServer;
  FSendBuffer := TSendBuffer.Create(False);
  inherited Create(ACreateSuspended, ASocket);
end;



или же все таки лучше так:

Код

constructor
  TClientThread.Create(AServer: TServer; ACreateSuspended: Boolean;
  ASocket: TServerClientWinSocket);
begin

  inherited Create(True, ASocket);
  FServer := AServer;
  FSendBuffer := TSendBuffer.Create(False);
  if not ACreateSuspended then
    Resume;
end;


Если только второй вариант правильный, то почему?

Автор: MetalFan 10.3.2009, 21:36
если в коде наследника используются данные, которые инициализируются в конструкторе предка, то логично, что сначала надо вызвать конструктор предка...

Автор: Delphist 11.3.2009, 11:41
Цитата(MetalFan @  10.3.2009,  22:36 Найти цитируемый пост)
если в коде наследника используются данные, которые инициализируются в конструкторе предка

нет, такие данные не используются, тогда получается можно без проблем пользоваться первым способом?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)