Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функции Overload. [D5, D6, D7]


Dummes ©   (2005-06-14 10:58:00) 

Пытаюсь 2-е фукции с разными возвращающимися результатами использовать как Overload из DataModule. У Архангельского сказано, что возможно использование таких вещей в одном поле видимости.
Вопрос: Как должно выглядеть объявление этих функций в секции Public Datamodule. Колличество их ограниченно?


icWasya   (2005-06-14 17:09:00) [1]

такое даже в C++ невозможно


-=XP=-   (2005-06-14 13:55:00) [2]

pasha_golub ©   (14.06.05 13:47) [13]
Anatoly Podgoretsky ©   (14.06.05 13:18) [12]
Опровержение в студию!

ЗЫ Я чисто из-за спортивного интереса...


Я так подозреваю, весь сыр-бор из-за неточности формулировки "разница возвращаемых значений". Имеется в виду все же "разница типов возвращаемых значений". Но, в любом случае, первое является подмножеством второго. :)


pasha_golub   (2005-06-14 13:47:00) [3]

Anatoly Podgoretsky ©   (14.06.05 13:18) [12]
Опровержение в студию!

ЗЫ Я чисто из-за спортивного интереса...


Anatoly Podgoretsky   (2005-06-14 13:18:00) [4]

Dummes   (14.06.05 11:20) [8]
Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.

Наглая ложь!


-=XP=-   (2005-06-14 11:30:00) [5]

К сожалению, почерпнуть подробное инфо было неоткуда.

Кхм... В справке по Delphi про перегрузку методов, процедур и функций есть целые разделы. В них все понятно, доходчиво и исчерпывающе описано:

You can declare more than one routine in the same scope with the same name. This is called overloading. Overloaded routines must be declared with the overload directive and must have distinguishing parameter lists<...> Overloaded routines must be distinguished by the number of parameters they take or the types of their parameters <...> If you use default parameters in overloaded routines, be careful of ambiguous parameter signatures. For more information, see Default parameters and overloaded routines <...>

И много-много прочего...


Dummes   (2005-06-14 11:28:00) [6]

угу.самый секретный раздел языка. справку смотреть пробовали?

No coment!


Val   (2005-06-14 11:23:00) [7]

>[8] Dummes   (14.06.05 11:20)

> К сожалению, почерпнуть подробное инфо было неоткуда.

угу.самый секретный раздел языка. справку смотреть пробовали?


Dummes   (2005-06-14 11:20:00) [8]

Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.

Спасибо -=XP=- ©  за разъяснение.
К сожалению, почерпнуть подробное инфо было неоткуда.


Digitman   (2005-06-14 11:13:00) [9]


> где же Overload?


overload сам допишешь


> Ругается при этом


SomeParams видишь ?


-=XP=-   (2005-06-14 11:12:00) [10]

Я делал так:
public
function MyMethod: Integer;overload;
function MyMethod: String;overload;


Неправильно делали. Читайте справочник Delphi по перегрузке методов. Особое внимание уделите ограничениям на перегрузку.


-=XP=-   (2005-06-14 11:10:00) [11]

Пытаюсь 2-е фукции с разными возвращающимися результатами использовать как Overload из DataModule

Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.
Перегружать можно только процедуры, функции и методы с разными входнымипараметрами. Но перегрузка функций типа:
function DoSomething: integer; overload;
function DoSomething: double; overload;

невозможна. Ибо тип возвращаемого значения не является поводом для определения компилятором вызываемой функции:
var
 i: integer;
begin
 i := DoSomething; // В общем случае неопределенность
 DoSomething; // Вообще неопределенность


Если же функции (процедуры, методы), отличаются входными параметрами, то их возможное количество не ограничено.


Dummes   (2005-06-14 11:07:00) [12]

public
function MyMethod(SomeParams1): SomeType1;
function MyMethod(SomeParams2): SomeType2;
А где же Overload?

Я делал так:
public
function MyMethod: Integer;overload;
function MyMethod: String;overload;

...Ругается при этом!


Dummes   (2005-06-14 11:05:00) [13]

3. чего?
- Колличество функций имеющих одинаковые названия имеет ограничение?

- К сожалению, что он называет "полем видимости" остается только предполагать. Скорее всего в одном модуле.

2. ничем не отличается от объявления в других секциях.
ПРи таком объявлении происходит ошибочка...


Digitman   (2005-06-14 11:03:00) [14]


> Как должно выглядеть объявление этих функций в секции Public
> Datamodule


TMyObject = class(TDataModule)
..
public
 function MyMethod(SomeParams1): SomeType1;
 function MyMethod(SomeParams2): SomeType2;
 ...
 function MyMethod(SomeParamsN): SomeTypeN;
end;


Val   (2005-06-14 11:00:00) [15]

1. а что он называет "полем видимости"?
2. ничем не отличается от объявления в других секциях.
3. чего?


Наверх

Титульная страница Поиск, карта сайта Написать письмо