Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Надо ли явно инициализировать статические переменные класса? / 6 сообщений из 6, страница 1 из 1
06.04.2019, 20:30
    #39797698
Страдалецъ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо ли явно инициализировать статические переменные класса?
Если есть такой код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
 TMyClass = class
   private
    class var ID: Integer;
   public
    constructor Create;
 end;
...

constructor TMyClass.Create;
begin
 Inc(ID);
end;


то надо ли для него добавлять?
Код: pascal
1.
2.
initialization
 TMyClass.ID := 0;
...
Рейтинг: 0 / 0
06.04.2019, 20:58
    #39797706
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо ли явно инициализировать статические переменные класса?
Страдалецъ,

Глобальные переменные, согласно документации, всегда инициализируются. Переменные класса - это, фактически, глобальные переменные. Однако, документация ничего не говорит относительно переменных класса.
...
Рейтинг: 0 / 0
06.04.2019, 21:09
    #39797708
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо ли явно инициализировать статические переменные класса?
СтрадалецъЕсли есть такой код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
 TMyClass = class
   private
    class var ID: Integer;
   public
    constructor Create;
 end;
...

constructor TMyClass.Create;
begin
 Inc(ID);
end;


то надо ли для него добавлять?
Код: pascal
1.
2.
initialization
 TMyClass.ID := 0;


Если 0, nil, пустая строка и т.п. - не нужно явно инициализировать.

Если нужна какая-то особенная инициализация - используй static constructor's.
То же самое, что initialization, просто kjв другом месте.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
type
 TMyClass = class
   private
    class var ID: Integer;
   public
    constructor Create;
    class constructor StaticCreate;
 end;
...

constructor TMyClass.Create;
begin
 Inc(ID);
end;
...
Рейтинг: 0 / 0
06.04.2019, 23:05
    #39797731
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо ли явно инициализировать статические переменные класса?
Как по мне, удобно потом читать код где все четко и явно и нет никаких неявных вещей.

Кстати могли бы и добавить инициализацию в объявлении, чтобы компилятор мог сразу сгенерить что надо. Опять в QC

class var ID: Integer = 1;
...
Рейтинг: 0 / 0
07.04.2019, 16:44
    #39797866
Страдалецъ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо ли явно инициализировать статические переменные класса?
X-Cite я именно так и хотел, но компилятор мне этого не позволил, а потому через инициализацию. Возможно в D2010, в ктором я это пишу, нет такого функционала.
...
Рейтинг: 0 / 0
07.04.2019, 18:29
    #39797877
Foxpc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо ли явно инициализировать статические переменные класса?
Страдалецъ,

нельзя. Это слишком слооожна для компилятора
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Надо ли явно инициализировать статические переменные класса? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]