Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2012, 19:47   #1
rublyabachka
Пользователь
 
Аватар для rublyabachka
 
Регистрация: 12.12.2011
Сообщений: 31
По умолчанию Перегрузка операторов в Делфи

Вы не подскажете как перегрузить операторы:
1):= Бинарный Оператор класса;
2)- Унарный Дружественный оператор.
спасибо!

Последний раз редактировалось rublyabachka; 16.07.2012 в 19:54.
rublyabachka вне форума Ответить с цитированием
Старый 16.07.2012, 20:11   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Если не изменяет память, с Delphi 2007 можно
Для этого объявляются классовые операторы:
Код:
class operator Subtract(a,b:тип):тип;
class operator Implicit(a:тип):тип;
и соответственно их реализация

Например:
Код:
TMyClass = class
  class operator Implicit(a:TMyClass):TMyClass;
  class operator Subtract(a,b:TMyClass):TMyClass;
  .....
  private
    FInt:integer;
  public
    property IntProp:integer read FInt write FInt;
end;

TMyClass.Implicit(a:TMyClass):TMyClass;
begin
 Result.IntProp:=a.IntProp;
end;

TMyClass.Subtract(a,b:TMyClass):TMyClass;
begin
 Result.IntProp:=a.IntProp-b.IntProp;
end;
благодарность - сюда (не забываем писать от кого)

Последний раз редактировалось Zer0; 16.07.2012 в 20:14.
Zer0 вне форума Ответить с цитированием
Старый 16.07.2012, 20:28   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чесно говоря не в курсе как с классами, но вот с записями можно поступать так:
Код:
type
 c=record
   private
    i:integer;
    class operator Dec(a:c):c;
 end;

class operator c.Dec(a: c): c;
begin
 Result.i:=a.i-1;
end;

var q,w:c;
begin
 q.i:=3;
 dec(q);
 write(q.i);
 readln;
end.
Код понятен или пояснить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2012, 21:12   #4
rublyabachka
Пользователь
 
Аватар для rublyabachka
 
Регистрация: 12.12.2011
Сообщений: 31
По умолчанию

ага, а как быть если дружественный? там слово friend писать? и где его писать?
rublyabachka вне форума Ответить с цитированием
Старый 16.07.2012, 21:31   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чего не знаю того не скажу. Не доводилось еще юзать новодельфийские фички.
Загляни в хелп Эмбаркадеро.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2012, 21:50   #6
rublyabachka
Пользователь
 
Аватар для rublyabachka
 
Регистрация: 12.12.2011
Сообщений: 31
По умолчанию

честно говоря с этим сайтом незнакома, даже хелп найти не могу(((
rublyabachka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов riko782 Помощь студентам 10 06.05.2012 23:28
Перегрузка операторов. Macb3th Общие вопросы C/C++ 5 01.04.2010 21:14
Перегрузка операторов (С++) Перчитель Помощь студентам 1 03.12.2008 18:46
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15