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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
blackfxx
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 2
#1

Возращение результата функции в виде указателя на объект - C++

23.09.2010, 11:09. Просмотров 722. Ответов 2
Метки нет (Все метки)

есть функция
C++
1
2
3
4
5
6
My_Class* preprocessing(const My_Class* obj)
{
My_Class* Result = new My_Class();
...
return Result;
}
внутри неё создается указатель на локальный объект, проводятся действия и он возращается как результат функции. Читал в статье то, что так делать нежелательно.

вот пример статьи
C++
1
2
3
4
5
6
7
8
Complex&
Complex::Add(const Complex& x)
{
  Complex result;
  result.real = real + x.real;
  result.imaginary = imaginary + x.imaginary;
  return result;
}
При выходе из метода автоматическая переменная result уничтожается, и память, выделенная для нее, освобождается. Поэтому результат Add – ссылка на несуществующую память. Результат подобных действий непредсказуем. Иногда программа будет работать как ни в чем не бывало, иногда может произойти сбой, иногда результат будет испорчен.
подходит ли это к моему случаю, и если да то что тогда делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2010, 11:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возращение результата функции в виде указателя на объект (C++):

Статические функции: добавления указателя (типа AbstractClass) на объект данного класса - C++
Здравствуйте! Не так давно начал изучать C++, препод дал такое задание: Часть 1. Разработка абстрактного класса. .... Часть 2....

Возращение параметра из функции - C++
Приветствую помогите разобраться: есть функция, которая сортирует массив и которая считает количество перестановок. Это кол-во перестановок...

Выделение памяти оператором new в функции и возращение ею этого значения - C++
Сабж, получается после выхода из функции указатель удаляется, а выделенная память не освободится, так? Отсюда вопрос: как организовать...

Приведение void указателя к определенному типу с сохранением результата - C++
Есть функция funс(void *pointer, char type) { ... } Нужно чтобы в данной функции этот указатель приводился к определенному типу...

Удаление указателя на объект класса - C++
Что-то ни как не могу разобраться, где у меня ошибка?! Ниже приведен фрагмент кода: //... shapes *ptr=0; //ptr - указатель базового...

Возврат указателя на локальный объект - C++
Доброго дня! Заинтересовал процесс возврата указателя на локальный объек, а именно: char* fun() { char *ptr1 = "Hello world!"; ...

2
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
23.09.2010, 11:20 #2
у тебя нормально, указатель уничтожается, но адрес остаётся
важно потом освободить через delete
1
blackfxx
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 2
23.09.2010, 11:24 #3
Спасибо за ответ, про delete не забываю)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2010, 11:24
Привет! Вот еще темы с ответами:

Присвоение переменной поля указателя на объект - C++
Инициализация: Dragons* dragon; for (int i = 0; i <= 99; i++) { dragon = new Dragons(random(50), random(40), 3,8); } ...

Создание указателя на объект и выделение памяти - C++
Не пойму почему при добавлении одного указателя выдает ошибку Этот код работает class A { public: class B { public: ...

Указатель на объект из указателя на член класса - C++
Что как-то сей вопрос ставит меня в тупик. class A { int i; } obj; int main()

Передача в метод по перегрузке оператора указателя на объект - C++
У нас есть массив указателей на базовый класс STRING **ptr = new STRING* ; for (int i = 0; i<size; ++i) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru