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

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

08.03.2015, 11:13. Показов 3444. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru