Вопросы по С++

code_cpp
Дата: 30.05.2015 22:32:30
Возникло несколько вопросов по С++. Я новичёк, поэтому и вопросы соответствующие.
1. Есть ли новые изменения в языке, кроме стандартов С++11 и С++14?
2. Зачем нужно метапрограммирование в шаблонах, кроме как для теоретического интереса?
3. Чем отличается файл .hpp от .cpp и .h?
4. Почему С++ до сих пор не превратится в кроссплатформенный и многосистемный, как Java и C#?
5. Чем отличается программирование на C++ для Linux от программирования для Windows?
Dimitry Sibiryakov
Дата: 30.05.2015 22:37:48

Ответы:
1. А их тебе мало?..
2. Низачем.
3. Обычно .hpp это пре-компилированный заголовок.
4. Превратился и уже давно.
5. Ничем.

Posted via ActualForum NNTP Server 1.5

Anatoly Moskovsky
Дата: 30.05.2015 23:12:18
Dimitry Sibiryakov
3. Обычно .hpp это пре-компилированный заголовок.

Штоа? :)
Это просто заголовок, такой же как и .h, только там декларации С++.
MasterZiv
Дата: 31.05.2015 07:33:31
code_cpp,

не скажу, что ответы коллег неправильные, просто хочу подчеркнуть кое-какие аспекты.

1. Есть ли новые изменения в языке, кроме стандартов С++11 и С++14?

нет. все изменения в стандарте.

2. Зачем нужно метапрограммирование в шаблонах, кроме как для теоретического интереса?


а что ты понимаешь под метапрограммированием ?

3. Чем отличается файл .hpp от .cpp и .h?


ничем.
ты можешь делать #include файла с абсолютно любым суффиксом.

4. Почему С++ до сих пор не превратится в кроссплатформенный и многосистемный, как Java и C#?

он таким всегда был с рожднния.

5. Чем отличается программирование на C++ для Linux от программирования для Windows?

на стандартном с++ программирование не отличается ничем.
но часто программы используют API операционной системы и графических библиотек для своей работы. Тут дело скорее не в ОС, а в том, какие библиотеки используются. Библиотеки бывают переносимые и специфичные для конкретных ОС.
code_cpp
Дата: 31.05.2015 12:27:39
Спасибо всем, кто ответил.


MasterZiv,

наверное, не совсем правильно выразился. Зачем нужны вычисления до компиляции на основе шаблонов?
Правильно я понял, что написав код, не использующий специфические библиотеки для windows, спокойно откомпилируется и будет работать в других ОС и в системах с большей/меньшей разрядностью?
mayton
Дата: 31.05.2015 15:57:52
Вопрос номер 2 - сложен и требует уточнений.
Кудрявцев_Леонид
Дата: 31.05.2015 16:10:11
code_cpp
наверное, не совсем правильно выпазился. Зачем нужны вычисления до компиляции на основе шаблонов?

Я не очень понимаю, что есть "вычисления до компиляции"

С шаблонами игрался очень давно (в конце 90-х, на Borland C 3.x ) - жутко не понравилось, как они были реализованы. В целом хорошую идею загубили реализацией. Тогда, фактически, шаблоны разворачивались a la макрос. При наличие ошибок, искать их было убийственно.

Ну и тогда же читал книжку Страуструпа, во второй части книги он свои примеры реализации ряда классов показывал. Лично я половину его классов нафига не понял (на мой взгляд, очень многое было не ООП'шно и коряво).

code_cpp
Правильно я понял, что написав код, не использующий специфические библиотеки для windows, спокойно откомпилируется и будет работать в других ОС и в системах с большей/меньшей разрядностью?

При соблюдении ряда правил - да

При использовании побитовых операций и сдвига, можно получиться зависимость от разрядности. В свое время (80-е) издавалась тоненькая книжечка Корнига с Ричем - там 50% было посвящено именно написанию переносимого кода. Для большей/меньшей разрядности, порядка байт в слове и так далее.

В свое время потребовалось переносить пару своих проектов на C и Java на Linux (до того работал только с Windows). Как не парадоксально, C код смигрировал за день, а с Java кодом проблем было намного больше )))
MasterZiv
Дата: 31.05.2015 16:34:33
code_cpp,

Зачем нужны вычисления до компиляции на основе шаблонов?

вполне очевидно, чтобы перенести какие-то вычисления на момент компиляции.
но это достаточно редко бывает на практике.
MasterZiv
Дата: 31.05.2015 16:37:16
code_cpp,

Правильно я понял, что написав код, не использующий специфические библиотеки для windows, спокойно откомпилируется и будет работать в других ОС и в системах с большей/меньшей разрядностью?

спокойно откомпилируется - да, если все используемые библиотеки переносимые.
но для каждой платформы программу надо собирать заново.
Anatoly Moskovsky
Дата: 31.05.2015 17:10:47
code_cpp
2. Зачем нужно метапрограммирование в шаблонах, кроме как для теоретического интереса?

Назначение шаблонов - генерация кода (также известная как метапрограммирование).
Как и любой другой процесс, это требует анализа условий и принятия решений, для чего служат ветвления, рекурсия и прочее.
Шаблоны предоставляют возможности для реализации всего этого в момент генерации кода (при компиляции).
Это ответ на вопрос "Зачем?"