HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Флуд > Заметки на полях
Разработка С++ совместимой виртуальной машины
Страницы (12): « Первая ... « 8 9 10 11 [12]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34640
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
Как вы знаете, можно инициализировать переменные, объявленные в глобальном пространстве и переменные, объявленные внутри функции, а вот переменные-члены класса нельзя проинициализировать прямо там же внутри описания класса.

Ты, пожалуйста, всегда добавляй - "в шестёрке". А то звучит странно для современного плюсовика.
Цитата:
Дядя Миша писал:
Потому что никакой реальной инициализации в этом месте всё равно не происходит.

В каком "в этом" месте?
Цитата:
Дядя Миша писал:
бедные программисты, которые очень бояться перетрудится и написать несколько лишних букв в массе своей стараются не писать это слово void

Они не пишут его потому, что оно избыточно, и зашумляет текст.
Ты небось тоже не пишешь для каждого объявления инта - signed int.
Цитата:
Дядя Миша писал:
Нет, если серъезно, мне кажется что так красивее выглядит, поэтому и писал.

Ну это красота уровня public static final void.
Цитата:
Дядя Миша писал:
Это вам не Раст, который анализирует исходник целиком.

Это как?
Цитата:
Дядя Миша писал:
int foo( 5 ); // direct member initialization

А вот так у тебя можно?
C++ Source Code:
class CObject {
  int i = foo(5);  // function call
};

__________________

Сообщить модератору | | IP: Записан
Сообщение: 221530

Старое сообщение 06-08-2024 23:20
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32555
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
Ты, пожалуйста, всегда добавляй - "в шестёрке". А то звучит странно для современного плюсовика.

До 11-й версии, если быть точным.

Цитата:
XaeroX писал:
В каком "в этом" месте?

В месте объявления.

Цитата:
XaeroX писал:
Они не пишут его потому, что оно избыточно, и зашумляет текст.

Глупазте. Четыре буквы текст зашумить не могут. Текст зашумляют бесконечные обращения к STL, вызов лямбд и прочая аналогичная пакость, которой болеет современный С++.

Цитата:
XaeroX писал:
Это как?

А хрен его знает. Он же сперва парсит сорцы, а потом минут 20 думает о вечном.

Цитата:
XaeroX писал:
А вот так у тебя можно?

А что такое foo в данном контексте?

Добавлено 07-08-2024 в 10:02:

Добавил также инициализацию через = поскольку это поддерживается при инициализации объектов на стеке и в куче, следовательно логично поддержать это и здесь.
C++ Source Code:
1
class CObject
2
{
3
  vec3	origin( 10.0f, 20.0f, 30.0f );	// direct member initialization
4
  vec3	angles( 30.0f, 20.0f, 10.0f );	// direct member initialization
5
  vec3	scale = 1;				// initialization by default
6
 
7
  vec3	pool[10] = 0;
8
  vec3	test[10]( 0.0f, 1.0f, 0.0f );
9
public:
10
  int	foo = 5;				// direct member initialization
11
};

Но обратите внимание, конструкция вот такого вида
C++ Source Code:
vec3	scale = vec3( 1 );

не поддерживается, т.к. это не константное выражение. Члены класса можно инициализировать только константами.
В дальнейшем надо будет так же сделать инициализацию ссылок членов класса, поскольку они фактически были невозможными в старых версиях С++. Но я так и не смог придумать для чего подобное может понадобиться. Разве что представить ссылку в виде константного свойства только для чтения. Но в Шоте есть полноценные свойства. Так что пока не горит. Но для консистентности, разумеется надо будет потом сделать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221532

Старое сообщение 07-08-2024 07:02
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34640
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
Текст зашумляют бесконечные обращения к STL, вызов лямбд и прочая аналогичная пакость, которой болеет современный С++.

Ну вообще идея STL-алгоритмов как раз повысить читабельность. Вместо цикла - понятное название, скажем std::find_if.
Цитата:
Дядя Миша писал:
А что такое foo в данном контексте?

Ну скажем, глобальная функция. В плюсах можно написать вот так:
C++ Source Code:
1
int foo(int i) {
2
  return sqrt(i);
3
}
4
 
5
struct C {
6
  int i = foo(25);
7
};

И вот так можно написать - для эстетов:
C++ Source Code:
1
int foo(int i) {
2
  return sqrt(i);
3
}
4
 
5
struct C {
6
  int i = [](){ return foo(25); }();
7
};

А можно и вот так!
C++ Source Code:
1
int foo(int i) {
2
  return sqrt(i);
3
}
4
 
5
struct C {
6
  int i = 2*[](){ return foo(25); }();
7
};

Понятно, что вместо явно прописанных цифровых констант могут быть конст-переменные или макросы.
А могут быть другие функции. Вообще любые функции, они будут выполняться в момент создания экземпляра класса.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 221550

Старое сообщение 08-08-2024 02:48
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32555
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
скажем std::find_if.

Вот эти std:: зашумляют текст куда сильнее чем void. Как раз из-за двоеточий.

Цитата:
XaeroX писал:
Ну скажем, глобальная функция.

Так скажем, или глобальная? Я такого не делал, только инициализацию константными значениями. Но если мне такое понадобится, можно будет подумать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221552

Старое сообщение 08-08-2024 06:01
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34640
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
Но если мне такое понадобится, можно будет подумать.

Ну а если остальным такое понадобится, они просто возьмут С++. Логично.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 221558

Старое сообщение 08-08-2024 12:44
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32555
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
Ну а если остальным такое понадобится, они просто возьмут С++. Логично.

В шестёрке так допустим было нельзя, но все работали в ней и никто не жужжжал!

Впрочем, учитывая архитектуру Шота, я могу ещё много интересных конструкций добавить в язык, чисто в рамках компилятора. Интерпретатор останется прежним и совместимость тоже не пострадает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221560

Старое сообщение 08-08-2024 13:14
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32555
Нанёс повреждений: 392 ед.

Рейтинг



Кстати. Порядок инициализации глобальных конструкторов в cinit определён порядком исходных файлов, подаваемых на вход компиляции.
А порядок исходных файлов в свою очередь нарушен быть не может, т.к. компилятор автоматически сортирует их по алфавиту. Таким образом, если вы делаете какой-то надкласс, который призван следить за всеми остальными, ну например отладчик памяти, файл с объявлением экземпляра должен называться таким образом, чтобы гарантировано стать первым в списке компиляции. Ну например с восклицательного знака.
Но в шестёрке есть баг, что если добавить файл и сразу же начать компиляцию, то он будет добавлен в список самым последним.
Помогает выгрузка - загрузка проекта. Но возможно что этот баг так до сих пор не исправили и в новых студиях.
В Шоте авто-сортировки по именам нету, можно вручную задавать приоритеты. Но да, принцип тот же.
Кстати этот момент технично обходится во всех учебниках по С++ и возможно вообще не подлежит стандартизации.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221849

Старое сообщение 30-08-2024 12:19
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 09:16. Новая тема    Ответить
Страницы (12): « Первая ... « 8 9 10 11 [12]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Флуд > Заметки на полях
Разработка С++ совместимой виртуальной машины
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024