Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вопрос о классе


Автор: Romikgy 17.2.2006, 14:15
Извеняюсь за ламерский вопрос smile
Код

class TMy
va: word;
public
p: string;
private
lstr: dword;
end;

Какой тип видимости у члена класса va? public, private или другой?

Автор: Rennigth 17.2.2006, 14:18
по идее public, только с каким-то отличием.

Автор: Guedda 17.2.2006, 14:21
va будет public.
Самому почему бы не попробовать?

Автор: Rennigth 17.2.2006, 14:24
Guedda, неуверен, но помню было какое-то отличие от public именно для делфи.

Автор: Romikgy 17.2.2006, 14:27
Цитата(Rennigth @ 17.2.2006, 13:18 Найти цитируемый пост)
только с каким-то отличием.

Вот и мне так сказали , а какое отличие? может published?

Автор: Rennigth 17.2.2006, 14:41
If a member’s declaration appears without its own visibility specifier, the member has the same visibility as the one that precedes it. Members at the beginning of a class declaration that don’t have a specified visibility are by default published, provided the class is compiled in the {$M+} state or is derived from a class compiled in the {$M+} state; otherwise, such members are public.

вобщем или public или published если правильно перевел.

Автор: Snowy 17.2.2006, 14:50
Уже был такой вопрос. Лень искать, отвечу еще раз.
Для всех неконтролов (Tlist, Tstream и т.п.) по дефолту работает секция public
Для всех контролов (т.е. тех, что можно бросить на форму), по дефолту идет published

Автор: Romikgy 17.2.2006, 14:55
Как я понял если
Цитата(Rennigth @ 17.2.2006, 13:41 Найти цитируемый пост)
{$M+}

не указано или с минусом , то published , если указан эм плюс тогда public .
Окей спасибо за помощь smile

Автор: Snowy 17.2.2006, 15:05
Цитата(Romikgy @ 17.2.2006, 14:55 Найти цитируемый пост)
не указано или с минусом , то published , если указан эм плюс тогда public .
Нет.
Если не указан, то по дефолту {$М-} !
Как я сказал выше - public!
А published, если явно укажешь {$M+} или наследуешь от контрола или другого класса, в котором указал {$M+}.
Если явно не укажешь {$M+}, то такие классы - только контролы.
Все остальные классы идут с {$M-} по дефолту. То есть public.
Добавлено @ 15:06
Вобщем, если не юзаешь {$M} директиву, то правило - как я указал выше.
Если используешь - сам виноват smile
Добавлено @ 15:16
Вот. Не поленился - раскопал: http://forum.vingrad.ru/index.php?showtopic=68826

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)