Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Перегружаемые операторы


Автор: Delphist 20.8.2008, 08:36
Начиная с BDS2005 появилось нововедение Operator Overloading, скажите пожалуйста какие операторы можно переопределять, а также меня интересует можно ли например переопредилить оператор + и [] как в С++. Если нет прямого способа, то может как-нить hack'ом.

Автор: volvo877 20.8.2008, 09:20
Оператор "+" это "class operator Add", а [] - используй Property

Автор: Delphist 20.8.2008, 09:52
Цитата(volvo877 @  20.8.2008,  10:20 Найти цитируемый пост)
а [] - используй Property 

это как?

Автор: MetalFan 20.8.2008, 12:12
а что за оператор "[]"? в делфи чтото такого не помню...

Автор: Delphist 20.8.2008, 13:39
Цитата(MetalFan @  20.8.2008,  13:12 Найти цитируемый пост)
а что за оператор "[]"? в делфи чтото такого не помню... 

Что значит не помнишь например обращение к элементу в массиве происходит через [] , а я например хотел, чтобы возрашался не  элемент, а что-нить другое. То для этого достаточно переопределить []

Автор: MetalFan 20.8.2008, 14:35
Delphist, понятно. тогда видимо оно:
Цитата(BDS HELP)
The definition of an array property can be followed by the default directive, in which case the array property becomes the default property of the class.

Автор: Snowy 20.8.2008, 14:42
Квадратные скобки - не оператор, а синтаксис.
И переопределять незачем - они без функции не бывают.
А в функции пиши, что хочешь - хозяин-барин.

Автор: Delphist 20.8.2008, 15:28
Цитата(MetalFan @  20.8.2008,  15:35 Найти цитируемый пост)
The definition of an array property can be followed by the default directive, in which case the array property becomes the default property of the class.

ну и что это значит

Автор: Snowy 20.8.2008, 15:54
Это значит, что указание default у проперти делает идентичным обращения типа
Код

  obj.Items[i];
  // и
  obj[i];

Автор: Delphist 28.8.2008, 09:05
Цитата(Snowy @  20.8.2008,  16:54 Найти цитируемый пост)
Это значит, что указание default у проперти делает идентичным обращения типа

а вот считал что default для свойства опрделяет значение по умолчанию.

Автор: Snowy 28.8.2008, 12:57
Ну тут далеко за примером ходить не нужно.
Вот строка из объявления TStrings:
Код
    property Strings[Index: Integer]: string read Get write Put; default;
Благодаря этому default, обращения типа
Код
var
  sl: TStringList;
begin
  ...
  sl.Strings[i] := 'Строка';
  // и
  sl[i] := 'Строка';
Идентичны.
Не указывая конкретного проперти, подразумевается дефолтовое проперти.
Но тут ничего перегружать не нужно - функции всегда явно прописаны на самом проперти.

Автор: WaReZMEN 5.12.2008, 11:17
а как перегрузить "=" ???? подскажите примерчиком smile

Автор: bems 5.12.2008, 18:02
WaReZMEN, class operator Equal

Добавлено через 1 минуту и 14 секунд
тут статья: http://www.realcoding.net/article/view/1885

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