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

Ссылки и оператор new! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача указателей в функции http://www.cyberforum.ru/cpp-beginners/thread95700.html
Привет всем. Вообщем изучаю с\с++ по книге Павловской, дошел до динамических структур данных(списки, стеки, очереди...), Вообщем наткнулся там на пример списка, не могу понять как передаються ьам указатели в функции. А конкретно не понятны передачи указателей в функции add и remove. Объясните пожалйуста подробно, заранее благодарен всем отозвавшимся. #include <windows.h> #include <conio.h>...
C++ Виртуальные функции. Абстрактные классы. Есть у меня абстрактный класс class DataManager { protected: Configuration configuration; public: DataManager(Configuration config); virtual List<Buss> loadBuss() = 0; virtual List<Route> loadRoute() = 0; virtual List<Reys> loadReys() = 0; http://www.cyberforum.ru/cpp-beginners/thread95698.html
Описать процедуру, меняющую содержимое переменных X и Y C++
вот тут решил разобраться с языком си, решал задачки и вот напоролся на такую: Описать процедуру Swap(X, Y), меняющую содержимое переменных X и Y. Собстна как сделать такую штуку?
Ввод и вывод вектора C++
Такой вопрос. Программа должна вводить вектор из случайных чисел и выводить его на экран. При этом ввод и вывод нужно оформить в виде отдельных функций. Вопрос же в следующем: если я делаю это всё (ввод и вывод) в составе одной функции, то всё работает. Если же разделяю - то ничего не выводится. Помогите пожалуйста.
C++ c++ в кпк http://www.cyberforum.ru/cpp-beginners/thread95628.html
Вобщем начну с самого начала. Захотел я изучит c++, до этого работал с php в wap, но так как комп згорел, а на новый щас дениг нет поставил я на кпк pocket gcc и немогу найти инфу по програмированию в с помощью этого компилятора. Где только не спарашивал, в ответ тищина. Надеюсь здесь мне помогут, если я всё правельно понял то это портированый с пк на кпк gcc.
C++ Метод секущих Помогите, пожалуйста, с кодом к этой программе. 1 Определить координаты экстремальной точки унимодальной функции f(x)=11x2+23x+1,1 методами первого и второго порядков (метод секущих), с точностью =0,001. 2 Определить тип найденного экстремума Поиск экстремума провести в диапазоне от a до b. а= - 1100; в=1100. подробнее

Показать сообщение отдельно
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
15.02.2010, 22:13     Ссылки и оператор new!
Цитата Сообщение от Alexandr_LN Посмотреть сообщение
ЧТО будет с ссылкой, на что она будет ссылаться???
еще раз повторяю.

ссылка - это псевдоним. она как была псевдонимом *pint так и останется. ибо
C++
1
delete pint;
на сам pint никак не влияет.

Лучше задай вопрос, что происходит с переменной pint. Она хранит адрес.

Когда ты делаешь
C++
1
int *pint=new int(5);
у нас выделяется область памяти под переменную типа int (причем переменная инициализуерся значением 5) и возвращается адрес выделенной области памяти, который присваевается переменной-указателю pint.

Когда ты после этого делаешь
C++
1
delete pint;
у тебя область памяти удаляется (если быть конкретней, то помечается как свободная память, поэтому некоторое время там вполне может хранится значение 5), но переменная pint как была так и осталась.. более того, она продолжает содержать адрес того участка памяти, на который она ссылалась. Но данный участок памяти более не принадлежит нашей программе, более того, там могут располагаться жизненно важные данные другой программы и запись в эту область может очень повредить (хотя сработают методы защиты, но все же их тоже можно обойти). поэтому лучше всегда делать так:

C++
1
2
delete pint;
pint = 0;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru