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

интеллектуальные указатели - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Решето Эратосфена http://www.cyberforum.ru/cpp-beginners/thread665022.html
Дано число N (2<=N <=10000), найдите и выведите простые числа между 2 и данным N. Простое число - число, которое может быть разделено ТОЛЬКО на 1 и на себя самого. Примеры: 2, 13, 17 Намек: Используйте метод Эратосфена. Посмотрите, как это работает ниже на картинке. Give N (2<=N<=10000) number,find and output the prime numbers between 2 and given N. Prime number is the number that can...
C++ C++. Интеграл Найти интеграл функции за 3 типами: прямоугольника, трапеции, Симпсона - e в степени корень квадратный модуль икс. http://www.cyberforum.ru/cpp-beginners/thread665018.html
C++ массив структур
Вопрос собственно говоря простой: как объявить функции, работающие с массивом структур как то ввод, вывод и т.д. и т.п. Это первый вопрос. Задач много. Чтоб не заводить сотню тем буду спрашивать совета здесь. Насколько я понял массив структур объявляется так: struct vector { double x; double y; double z; }; int const size=10;
Сортировка двумерного массива и заголовочный файл C++
Помогите пожалуйста исправить ошибку. sort2.h: void sort2(int array,int n); sort2.cpp: #include "sort2.h"; #include "stdafx.h"; void sort2(int array, int n)
C++ Функции в struct http://www.cyberforum.ru/cpp-beginners/thread664998.html
Я даже не думал, что в struct можно объявлять функции. Представлялось так: struct - набор данных, class - уже объектное что-то, грубо выражаясь данные+методы. Оказалось не совсем так. Тогда в чем отличия, если и там и там, есть методы, наследование, конструкторы, деструкторы?
C++ Удаление комментариев из листинга программы Создать программу, которая будет удалять из листинга программы на языке с++ (файл*.cpp) коментарии вида // коментарий. Для работы с файлами использовать фунцкцию cstdio. подробнее

Показать сообщение отдельно
AnreyKazakov
Заблокирован
07.10.2012, 10:02  [ТС]     интеллектуальные указатели
Все равно не очень понятно. Вот смотрим
задача - нужно чтобы в создаваемый объект класса х некое значение передовалось по ссылке, пусть i. Где-то этот i был создан в динамической памяти ( int* i =new int(10); ). Пусть он создан в main. Используем обычные указатели. Теперь каждый созданный объект класса х работает напрямую с этим указателем, захотел поменял значение, захотел не поменял, ну и соответственное значение меняется во всех остальных объектах класса х.... Вопрос как можно навредить такому коду? как можно с объекта класса удалить этот i, и зачем...
второе , все то же самое, но указатель интеллектуальный. В моем случае (кот описан в учебнике, код выше) при создании нового объекта класса х зачем то создается вспомогательный класс, пусть будет y. В нем содержится все та же ссылка на указатель i, он ничего не делает только хранит адрес i (передает его в новые обхекты класса х) и смотрит сколько раз его вызвали, считает, если счетчик = 0 , до срабатывает деструктор... Вопрос еще раз, зачем он нужен, этот класс y?
По сути дела если вдруг случайным образом удалить объект i ( delete i; ) то в обоих случаях произойдет ошибка, тогда в классе y, как я понимаю, нужно создавать копию i (int* j = new int(*i); ) . Все хорошо теперь работаем всеми классами с указателем j, никаких ошибок, i можно спокойно удалять. Тогда можно в main и не занимать динамич память, сразу в класс y запихивать значение *i, те (int* j=new int(10); ) и все.
PS Правильны ли суждения мои?
 
Текущее время: 21:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru