Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Стратегия "получение ресурса есть инициализация" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Непонятки с wchar_t http://www.cyberforum.ru/cpp-beginners/thread837244.html
Прошу помощи: что-то не так с wchar_t. Не копирует имена файлов. Содержание program_config.txt config.cfg C:\\Projects\\abx.txt static wchar_t* charToWChar(const char* text)
C++ Ошибка ms vs c++ rl Здравствуйте! Я хотел запустить прогу мою на другом компе и мне выскочила такая ошибка. This application has requested the Runtime to terminate it in an unusual way. Библиотеки VS c++ пробовал... http://www.cyberforum.ru/cpp-beginners/thread837234.html
Написать функцию, которая переворачивает строку C++
Написать функцию, которая переворачивает строку. Заголовок функции: void reverseStr (char *s); Написать программу, которая принимает от пользователя набор строк (массив строк), переворачивает все...
C++ Игровая программа ипподром"
Добрый день, помогите пожалуйста: Необходимо создать игру "Ипподром". Я сделал в консоле что мог, не могу заставить своих "сосисочек" бегать вместе, но с разной скоростью. Получается что они бегут...
C++ Работа с указателями http://www.cyberforum.ru/cpp-beginners/thread837193.html
Помогите пожалуйста объяснить, не понимаю почему число присваемое через указатель *А в кавычках, и равны ли *А и просто А??? char *A = "123456789"; unsigned B = 1; char *X = A + B; char *Y = A -...
C++ ошибка в задаче на палиндром Ребят помогите пожалуйста. Задачка найти палиндром в массиве. Писал-писал и в итоге в ф-ии последнее условие if (arr_t1==arr_t2) постоянно выводит ложь, не понимаю, почему оно мне врет((( //Дан... подробнее

Показать сообщение отдельно
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,093
28.06.2014, 02:34
Цитата Сообщение от TheChosenOne Посмотреть сообщение
Ну,тут функция,переменные локальны по отношению к ней - тут то все ясно.
Механизмы одни и те же.

Если брать твою фразу, то а и b по отношению к вложенной в foo class scope C, все остальное работает точно так же как в предыдущем примере.
Вот я тут уточнение написал:
Цитата Сообщение от DrOffset Посмотреть сообщение
созданные подобъекты принадлежат этой же области видимости, что и главный объект
На самом деле не совсем так. Чтобы не придирались к формулировке приведу такой псевдокод.
C++
1
2
3
4
5
6
7
8
void foo()
{
    C c { //class C scope
        A a;   
        B b;
    
    }
}
Потому что у класса на самом деле своя область видимости - class scope. Но в данной ситуации это не важно, я просто размотал иерархию подобъектов в плоское представление, чтобы было понятнее.

Цитата Сообщение от TheChosenOne Посмотреть сообщение
А вот во втором случае, откуда компилятору знать что С состоит из а и b ?
Как это откуда? Программист же написал класс и определил что там и как, компилятор все про это знает.

Цитата Сообщение от TheChosenOne Посмотреть сообщение
И второе,когда в куче создаешь объект - деструкторы вызываются тоже,хотя объект созданный при помощи new не входит в число локальных...
Ну это вообще сейчас не в тему. В стандарте четко разделены автоматические объекты и динамические. Мы говорим про автоматические.
С динамическими объектами деструктор не вызывается никогда, если не был вызван delete. А delete - это по сути освобождение памяти и прямой вызов деструктора.

Добавлено через 2 минуты
Цитата Сообщение от TheChosenOne Посмотреть сообщение
Т.е. объект созданный с помощью new не входит в область видимости try-блока (он где-то в куче). Однако когда генерируется исключение ,все его подобъекты уничтожаются.
Его уничтожает деструктор unique_ptr (который-то как раз автоматический). В этом вся суть умных указателей. Мы даем динамический объект под контроль автоматического, и используем механику автоматических объектов для управления ресурсами.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru