Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для Sigaev
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 5

Хотите проверить сами себя на знание C++?

08.03.2015, 11:13. Показов 3392. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хотите проверить сами себя на знание C++?
Проверь самого себя на знание C++
Миниатюры
Хотите проверить сами себя на знание C++?  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2015, 11:13
Ответы с готовыми решениями:

Процессоры, которые разгоняют сами себя
а слышали ли про процы последней модели проц сам себя разгоняет каким то образом - кто сталкивался ?

Как сайты ссылаются сами на себя?
Как сайты ссылаются сами на себя при поиске google? Влияет ли это на ПР? Пример поиск при этом других ссылок нет а ПР у сайта 4

Нужно присвоить Id ссылкам и чтобы оин не ссылались сами на себя
Здравствуйте у меня есть такой вопрос как сделать на сайте каждой статье присваивается ID надо еще присвоить ID ссылкам в статье чтобы при...

24
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
08.03.2015, 15:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от castaway Посмотреть сообщение
А по-моему это верно
рассмотрим код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void InitRender()
{
    // укажите класс памяти объекта
    THROW_EXCEPTION(InvalidRender("подсистема render повреждена")); 
    // однозначно: не куча, потому что мы явным образом не создаем объект в куче
    // явно не автоматический, потому что переживает обратную раскрутку стека
 
    //макрос THROW_EXCEPTION раскрывается в:
    // throw InvalidRender(__FUNCTION__, "подсистема render повреждена")
}
 
void InitGUI()
{
    try{
        InitRender();
    }
    catch(std::exception& e)
    {
         // огласите время жизни объекта-исключения
         // переживет ли пойманное исключение секцию ловушки? 
         // укажите, какой класс хранения отвечает за данное поведение
 
        THROW_EXCEPTION(InvalidGUI
            (e, "подсистема GUI не может быть проинициализирована, потому что render не готов"));
 
       //макрос THROW_EXCEPTION раскрывается в:
       // throw InvalidRender(__FUNCTION__,  e , 
          //     "подсистема GUI не может быть проинициализирована, потому что render не готов")
 
    }
}
 
int main()
{
  try{
        InitGUI();
    }
    catch(std::exception& e)
    { 
         // здесь мы хотим увидеть данные не только по последнему исключению
         // но так же всю трассу: где какие исключения вылетали
         // что они содержали
         std::cout<<e.what()<< std::endl;
    }
}
вывод программы:

in function main:
in function InitGUI:
exception: InvalidGUI("подсистема GUI не может быть проинициализирована, потому что render не готов")
reason:
in fuction InitRender:
exception: InvalidRender("подсистема render повреждена")
Поскольку мы нигде явно не создаем эксепшен в куче, и нам не нужно его явно прибивать,
мы делаем вывод: оно существует не в куче. И подчиняется другим правилам.
Вообще поведение сильно напоминает поведение автоматического объекта.

Однако, поскольку исключение переживает выход за пределы видимости автоматических переменных,
мы делаем вывод: это не автоматический класс хранения.

Так какой же это класс хранения?

А нам, как программистам с++ это очень важно.
Как минимум нам критично знать правила, которые определяют область жизни эксепшена.

В коде приведенном выше используется особый тип исключения,
который умеет копировать в себя другое исключение.

И при помощи макроса пробрасываемое исключение умеет собирать в себя все исключения по всей трассе.

Но возможно, если бы мы, программисты понимали нюансы,
а именно - особенности класса хранения исключения, то мы бы могли сделать так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void InitRender()
{
    // макросы нам больше не нужны.
    // мы пишем чистый с++ код
    throw InvalidRender("подсистема render повреждена"); 
}
 
void InitGUI()
{
    try{
        InitRender();
    }
    catch(std::exception& e)
    {
        //<--- мы больше не копируем объекты исключения, 
        // что бы сохранить информацию о них
        throw InvalidGUI
            ("подсистема GUI не может быть проинициализирована, потому что render не готов");
    }
}
 
int main()
{
    // тот, кто контролирует добычу спайса - контролирует всю вселенную
    // (ц)Дюна
 
    tools::enable_exception_trace();
 
   try{
        InitGUI();
    }
    catch( ... ) //<--- нам не нужно знать типы исключений
    {       // что бы получить к ним доступ
         tools::exceptions_view();
    }
 
    // зачистка
    tools::finalize_all_exceptions();
 
}
вывод программы:

in function main:
in function InitGUI:
exception: InvalidGUI("подсистема GUI не может быть проинициализирована, потому что render не готов")
reason:
in fuction InitRender:
exception: InvalidRender("подсистема render повреждена")
Но что бы построить такую модель, вам придется познать вещи:

1. Признать, что классов памяти больше, чем то количество, которое декларирует стандарт.

2. Понять, что некоторые вещи просто невозможно стандартизировать.

стандарт языка декларирует только поведение, которое не зависит от платформы.

Но он не будет декларировать положения,
которые могут больно ударить по оптимизации,
или затруднят работу на отдельных платформах.

3. Познать что скрывается за термином "implementation-defined"

4. Признать, что "зависимый от конкретной реализации" дизайн возможно не получится портировать под конкретную платформу.


----------------------------------------------------

Резюмируя:
классов памяти гораздо больше, чем только "стандартные".

уже сейчас можно опционально включить мусоровозку (автоматическая сборка мусора).

с++17 по слухам и вовсе хотят полностью пересмотреть модели работы с памятью.
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.03.2015, 16:43
Цитата Сообщение от hoggy Посмотреть сообщение
Так какой же это класс хранения?
Похоже мне придётся признать свою неправоту в этом вопросе. Стандарт ничего конкретного не говорит по этому поводу.
Кликните здесь для просмотра всего текста
15.1
...
The memory for the exception object is allocated in an unspecified way, except as noted in 3.7.4.1.
...

3.7.4.1
...
[ Note: In particular, a global allocation function is not called to allocate storage for objects with static
storage duration (3.7.1), for objects or references with thread storage duration (3.7.2), for objects of type
std::type_info (5.2.8), or for an exception object (15.1). —end note ]
...

Но! Возвращаясь к теме, всё же будет правильным исправить вопрос о "трёх видах памяти", прибавив к ним еще один.
Да и рассуждения, начинающиеся с 12-го поста, по-хорошему следовало бы начать с новой темы, hoggy, согласись!?
0
08.03.2015, 16:44

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
Откройте исходники какого-нибудь Boost.MPL.
И убедитесь, что ничегошеньки не знаете !..
:D
Ничто так не разочаровывает как разбор исходников проф. разработчиков не говоря уже о шаблонной магии конструкции которой просто в голове не умещаются...

0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
08.03.2015, 17:15
Лучший ответ Сообщение было отмечено Sigaev как решение

Решение

Цитата Сообщение от Sigaev Посмотреть сообщение
Хотите проверить сами себя на знание C++?
В интернете есть всевозможные тесты на знание C++. Можете поискать. Например, вот, первая ссылка в гугле
http://www.quizful.net/test/cpp_mid
1
08.03.2015, 22:10

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
Откройте исходники какого-нибудь Boost.MPL.
а и посмотрел бы. Однажды я задумал посмотреть исходники одного линуксоидного дистрибутива. Там ведь исходники открытые, как я знаю. В общем, я закалебался пыль глотать их ИСКАТЬ, а не то, что смотреть. Boost.MPL в данном случае именно какой-нибудь. Что он делает, где он есть, где брать исходники- пока разберёшься с этими организационными вопросами, вся охота пропадёт смотреть. Там может вообще нетрудно.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2015, 22:10

Не удаётся проверить издателя. Вы действительно хотите запустить этот файл?
Здравствуйте. Заметил небольшую странность. Если запустить программу которая лежит на \\winXP\share\program.exe то выскакивает окно...

Знание/не знание устройства компьютера
Я убедился, что программисты нашей фирмы знают устройство компьютера. Видимо они изучали это в институте. Те кто изучает программирование...

Как проверить работу php-страницы у себя на компьютере?
Добрый вечер! подскажите пожалуйста как проверить работу php страницы у себя на компьютере?

Устанавливаются сами по себе программы и открываются вкладки в браузеры тоже сами
Устанавливаются сами по себе программы и открываются вкладки в браузеры тоже сами открываются. Подскажите что делать? Извиняюсь, не пойму...

JQuery! Проверка самого себя, Как проверить цвета объекта, равны ли они самому себе?
Есть несколько div, с классом .menu, у меня такая ситуация что цвет меняется динамически (сразу 1 цвет задается для всех блоков) и иногда 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Из невышедшего на форуме-2. Беседа с ИИ об олдскульных разработчиках и их методов в программировании
zorxor 23.09.2026
Друзья, этот материал не вышел на форуме, а хотя он очень и очень важный. Хотя, точнее, материал этот вышел, но оказался несовместимым с форматом форума. А тут можно, в блоге. . . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru