Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Есть вопросы   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
1-1110087607
TeNY
2005-03-06 08:40
2005.03.20
Dokymeнтация на WEBbrouser,Где можно найти?


14-1109401243
boriskb
2005-02-26 10:00
2005.03.20
Намедни был на концерте С. Альтова.


1-1110013855
msgipss
2005-03-05 12:10
2005.03.20
Вопрос заварника про this


3-1108991436
Вудупипл
2005-02-21 16:10
2005.03.20
Grid с картинками в сетке


4-1107414279
ksa2002
2005-02-03 10:04
2005.03.20
Переменные в потоке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский