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

Что будет с указателем после использования операции delete? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в коде http://www.cyberforum.ru/cpp-beginners/thread1108022.html
Цикл работает пока вводятся tempЫ и цикл_офф равен фалс. Когда пишу в темп "no more", cycle_off становится тру и цикл прекращается. Проблема в том что дальше окно закрывается и код...
C++ Как правильно отнаследовать? Здарова! Такой вопрос! как можно правильно записать следующее:есть два класса 1-й класс -граф, второй класс-минимальный путь из одной точки до другой.Хотел сделать следующее, есть некоторая перменная... http://www.cyberforum.ru/cpp-beginners/thread1108010.html
Разработайте программу на С++, которая вводила бы пробег в милях и бензин, использованный из каждой емкости C++
Здравствуйте! Помогите пожалуйста! Программа работает, но не правильно немного, с меткой проблемы, результат выводит не верно на последних шагах. Очень хочется понять свои ошибки, но сама не...
Написать программу содержащую процедуры формирования и просмотра списка и функцию вставляющую элемент с заданным номером C++
написать программу содержащую процедуры формирования и просмотра списка и функцию вставляющую элемент с заданным номером
C++ Определить, упорядочены ли по возрастанию или по убыванию цифры в записи натурального n http://www.cyberforum.ru/cpp-beginners/thread1107992.html
Код работает только для возрастающих чисел, а для убывающих выдаёт NO. Думаю, проблема с индексами в массиве, но как ни пробовал, ничего не получилось изменить. Заранее благодарю :) Вот код:...
C++ Setlocale() и getline() Доброго времени суток. Вот код тестовой программы: void main() { setlocale(LC_ALL, "Russian"); char a; cin.getline(a, sizeof(a)); cout<<a<<endl; system("pause"); } подробнее

Показать сообщение отдельно
DrOffset
7321 / 4421 / 1001
Регистрация: 30.01.2014
Сообщений: 7,259
28.02.2014, 23:01
mariko_11,
В стандарте написано следующее (5.3.5/1):
The operand shall have a pointer to object type, or a class type having a single non-explicit conversionfunction (12.3.2) to a pointer to object type. The result has type void.
Т.к. delete-expression определяется как:
delete-expression:
::optdelete cast-expression
::optdelete [ ] cast-expression
и принимая во внимания процитированный абзац, легко сделать вывод, что delete-expression принимает нечто, что можно скастить к pointer to object type.
Смотрим что такое cast-expression (5.4/1):
The result of the expression (T) cast-expression is of type T. The result is an lvalue if T is an lvalue reference
type or an rvalue reference to function type and an xvalue if T is an rvalue reference to object type; otherwise the result is a prvalue.
Выделил наш случай, потому что каст к T='pointer to object type' подходит только под последнее условие.
Теперь осталось самое простое, посмотреть на prvalue (3.10/1):
— An rvalue (so called, historically, because rvalues could appear on the right-hand side of an assignment
expression) is an xvalue, a temporary object (12.2) or subobject thereof, or a value that is not associated
with an object.

— A prvalue (“pure” rvalue) is an rvalue that is not an xvalue.
В соответствии с выделенным становится понятно, что результатом cast-expression к указателю может быть только временный указатель.
Следовательно оригинал, ставший аргументом delete, никак не изменяется.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru