Текущий архив: 2005.03.20;
Скачать: CL | DM;
Вниз
Есть вопросы Найти похожие ветки
← →
listener (2005-02-28 18:48) [0]1) Нужно ли явно указывать const для аргументов ф-ции, если это не string? Вернее, стоит ли?
2) Можно ли полагаться на инициализацию переменных нулями в конструкторе класса? Только честно?
3) Объявлено:
cMyClass = class
...
end;
pMyClass = ^cMyClass;
Допустим мы передаем pmc : pMyClass в функцию. Как теперь правильно обращаться с pmc?
cMyClass(pmc).<что-то> ?
Спасибо!
← →
raidan © (2005-02-28 18:52) [1]Удалено модератором
← →
clickmaker © (2005-02-28 18:53) [2]
> 1) Нужно ли явно указывать const для аргументов ф-ции, если
> это не string? Вернее, стоит ли?
для составных типов (Variant, например) стоит, чтоб не толкать все в стек
> 2) Можно ли полагаться на инициализацию переменных нулями
> в конструкторе класса? Только честно?
можно, если это члены класса
← →
begin...end © (2005-02-28 18:58) [3]> listener (28.02.05 18:48)
3. Если уж так хочется передавать указатель на указатель, то тогда так: pmc^.<что-то>.
← →
Алхимик © (2005-02-28 18:59) [4]
> 1) Нужно ли явно указывать const для аргументов ф-ции, если
> это не string? Вернее, стоит ли?
Borland рекомендует, см. генофонд (VCL)
> 2) Можно ли полагаться на инициализацию переменных нулями
> в конструкторе класса? Только честно?
В общем случае всегда стоит явно инициализировать переменные.
Неинициализированные переменные часто становятся причинами возникновения ошибок-фантомов. Обычно они имеют нерегулярную природу, и их трудно выявить в процессе отладки. Особенно катастрофичными могут быть последствия при таком обращении с указателями.
http://zeus.sai.msu.ru:7000/programming/delphi/goodpract/
Дальше отвечать лень, ибо не потрудился выбрать конференцию правильно и сформулировать тему вопроса.
← →
begin...end © (2005-02-28 19:02) [5]> Алхимик © (28.02.05 18:59) [4]
To create an object, call the constructor method on a class type. For example,
MyObject := TMyClass.Create;
This allocates storage for the new object on the heap, sets the values of all ordinal fields to zero, assigns nil to all pointer and class-type fields, and makes all string fields empty.
← →
pasha_golub © (2005-02-28 19:03) [6]Удалено модератором
← →
Алхимик © (2005-02-28 19:17) [7]
> [5] begin...end © (28.02.05 19:02)
Так то поля объекта, а в вопросе про некие ПЕРЕМЕННЫЕ говорится.
Мы же нормальные буквоеды... :)
← →
Anatoly Podgoretsky © (2005-02-28 19:45) [8]listener (28.02.05 18:48)
pMyClass = ^cMyClass;
Судя по этому, безразницы что ты укажешь.
← →
Uncle Archi © (2005-02-28 21:13) [9]listener (28.02.05 18:48)
begin...end © (28.02.05 18:58) [3]
3) Вообщето можно и с ^ можно и без, Дельфи всё равно.
← →
Anatoly Podgoretsky © (2005-02-28 21:18) [10]Не совсем все равно, два разъименования не равны одному.
← →
listener (2005-02-28 22:32) [11]Спасибо большое за ответы.
> Если уж так хочется передавать указатель на указатель, то тогда > так: pmc^.<что-то>.
То есть ты хочешь сказать, что можно просто передавать так MyFunc(var pmc : cMyClass)? И не париться с указателями
> Вообщето можно и с ^ можно и без, Дельфи всё равно.
То есть cMyClass(ptr) и cMyClass(ptr^) - это одно и то же?
← →
begin...end © (2005-02-28 22:37) [12]> listener (28.02.05 22:32) [11]
> То есть ты хочешь сказать, что можно просто передавать
> так MyFunc(var pmc : cMyClass)? И не париться с
> указателями
Именно. Да и var тоже не нужно.
← →
default © (2005-02-28 22:38) [13]а как стрелочку поставил у заголовка сабжа?
← →
default © (2005-02-28 22:39) [14]аа вижу:)
← →
listener (2005-02-28 22:39) [15]Классы всегда передаются по ссылке?
← →
default © (2005-02-28 22:41) [16]listener (28.02.05 22:39) [15]
нет
← →
begin...end © (2005-02-28 22:46) [17]> listener (28.02.05 22:39) [15]
MyFunc(pmc: cMyClass) - здесь передаётся указатель на созданный экземпляр класса cMyClass. Напишете с var - указатель будет передан по ссылке, напишете без var - по значению. Но передаваться всё равно будет лишь указатель. Потому что любая переменная классового типа (такая, как pmc) - это указатель на область памяти, в которой находится созданный объект.
Страницы: 1 вся ветка
Текущий архив: 2005.03.20;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.031 c