Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.022 c
4-1107699954
Agent-Smith
2005-02-06 17:25
2005.03.20
Драйвер PC/SC


14-1109141254
Mystic
2005-02-23 09:47
2005.03.20
Тест на IQ


14-1109668797
ex080D:07BBh
2005-03-01 12:19
2005.03.20
Что будете дарить на 8 марта своим девушкам?


4-1107761079
pavel_guzhanov
2005-02-07 10:24
2005.03.20
Использование чекового термопринтера


3-1107447012
fess
2005-02-03 19:10
2005.03.20
Доступ к Access с помощью ADO




   Наверх