Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
ВнизФункции Overload. Найти похожие ветки
← →
Dummes (2005-06-14 10:58) [0]Пытаюсь 2-е фукции с разными возвращающимися результатами использовать как Overload из DataModule. У Архангельского сказано, что возможно использование таких вещей в одном поле видимости.
Вопрос: Как должно выглядеть объявление этих функций в секции Public Datamodule. Колличество их ограниченно?
← →
Val © (2005-06-14 11:00) [1]1. а что он называет "полем видимости"?
2. ничем не отличается от объявления в других секциях.
3. чего?
← →
Digitman © (2005-06-14 11:03) [2]
> Как должно выглядеть объявление этих функций в секции Public
> Datamodule
TMyObject = class(TDataModule)
..
public
function MyMethod(SomeParams1): SomeType1;
function MyMethod(SomeParams2): SomeType2;
...
function MyMethod(SomeParamsN): SomeTypeN;
end;
← →
Dummes (2005-06-14 11:05) [3]3. чего?
- Колличество функций имеющих одинаковые названия имеет ограничение?
- К сожалению, что он называет "полем видимости" остается только предполагать. Скорее всего в одном модуле.
2. ничем не отличается от объявления в других секциях.
ПРи таком объявлении происходит ошибочка...
← →
Dummes (2005-06-14 11:07) [4]public
function MyMethod(SomeParams1): SomeType1;
function MyMethod(SomeParams2): SomeType2;
А где же Overload?
Я делал так:
public
function MyMethod: Integer;overload;
function MyMethod: String;overload;
...Ругается при этом!
← →
-=XP=- © (2005-06-14 11:10) [5]Пытаюсь 2-е фукции с разными возвращающимися результатами использовать как Overload из DataModule
Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.
Перегружать можно только процедуры, функции и методы с разными входными параметрами. Но перегрузка функций типа:function DoSomething: integer; overload;
function DoSomething: double; overload;
невозможна. Ибо тип возвращаемого значения не является поводом для определения компилятором вызываемой функции:var
i: integer;
begin
i := DoSomething; // В общем случае неопределенность
DoSomething; // Вообще неопределенность
Если же функции (процедуры, методы), отличаются входными параметрами, то их возможное количество не ограничено.
← →
-=XP=- © (2005-06-14 11:12) [6]Я делал так:
public
function MyMethod: Integer;overload;
function MyMethod: String;overload;
Неправильно делали. Читайте справочник Delphi по перегрузке методов. Особое внимание уделите ограничениям на перегрузку.
← →
Digitman © (2005-06-14 11:13) [7]
> где же Overload?
overload сам допишешь
> Ругается при этом
SomeParams видишь ?
← →
Dummes (2005-06-14 11:20) [8]Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.
Спасибо -=XP=- © за разъяснение.
К сожалению, почерпнуть подробное инфо было неоткуда.
← →
Val © (2005-06-14 11:23) [9]>[8] Dummes (14.06.05 11:20)
> К сожалению, почерпнуть подробное инфо было неоткуда.
угу.самый секретный раздел языка. справку смотреть пробовали?
← →
Dummes (2005-06-14 11:28) [10]угу.самый секретный раздел языка. справку смотреть пробовали?
No coment!
← →
-=XP=- © (2005-06-14 11:30) [11]К сожалению, почерпнуть подробное инфо было неоткуда.
Кхм... В справке по 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 <...>
И много-много прочего...
← →
Anatoly Podgoretsky © (2005-06-14 13:18) [12]Dummes (14.06.05 11:20) [8]
Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.
Наглая ложь!
← →
pasha_golub © (2005-06-14 13:47) [13]Anatoly Podgoretsky © (14.06.05 13:18) [12]
Опровержение в студию!
ЗЫ Я чисто из-за спортивного интереса...
← →
-=XP=- © (2005-06-14 13:55) [14]pasha_golub © (14.06.05 13:47) [13]
Anatoly Podgoretsky © (14.06.05 13:18) [12]
Опровержение в студию!
ЗЫ Я чисто из-за спортивного интереса...
Я так подозреваю, весь сыр-бор из-за неточности формулировки "разница возвращаемых значений". Имеется в виду все же "разница типов возвращаемых значений". Но, в любом случае, первое является подмножеством второго. :)
← →
icWasya © (2005-06-14 17:09) [15]такое даже в C++ невозможно
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.06 c