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

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

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

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

22.03.2013, 19:11. Просмотров 347. Ответов 1
Метки нет (Все метки)

Всем хай. Решил вот освоить C++. Написал вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdlib>
using namespace std;
class N1 {
 
public: N1(){cout<< "-Конструктор N1-";}
       ~N1(){cout << "-Деструктор N1-";}
       void asd(){cout << "-Asd is run-";}
 
};
 
class N2{
 
 
public: N2(){cout<< "-Конструктор N2-";}
       ~N2(){cout << "-Деструктор N2-";}
        N1* ukn1();
};
 
N1* N2::ukn1(){N1 n;N1 *ukn;ukn = &n; return ukn;   };
 
 
int main(){
 
    N2 n1;
    N1* ukn1 = n1.ukn1();
    ukn1->asd();
 
 
    return 0;
}
На консоль вывелось следующие:
-Конструктор N2--Конструктор N1--Деструктор N1--Asd is run--Деструктор N2-

Если я не ошибаюсь, то получается что у меня в методе класса N2 создался объект класса N1, потом он удалился, потом в код функции маин возвратилась ссылка на него, а потом из удаленного объекта вызвалась функция. Причём никаких ошибок во время работы не возникло. Я читал что при работе методов создаются промежуточные объекты,
так что я хер пойму что у меня удалилось? На что возвратился указатель?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 19:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возврат указателей объектов из функций (C++):

Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей? - C++
Доброго времени суток! Рассматриваю пример (из Лафоре) сортировки массива указателей на объекты, для чего используются указатели на...

Возврат указателя на массив указателей - C++
Доброго времени суток. Есть программа, где куча методов должны работать с одни массивом указателей. Как мне сделать, чтобы в функции...

Контейнер list из указателей объектов - C++
Есть абстрактный класс и производный от него.В производном переопределяется вирт ф-ия draw(). Добавляю в контейнер указатель на объект,...

Способы создания объектов и арифметика указателей - C++
Вот сам код: class ListNode { public: ListNode(int val) { next=NULL; i=val; } ListNode*...

Двухмерный массив указателей из элементов объектов класса - C++
//point1.h #ifndef POINT_H #define POINT_H #include &lt;iostream&gt; class CIntArray { public:

Использование указателей и функций - C++
Сформировать динамический массив Х размера M × N из случайных целых чисел. В программе организовать функцию для подсчета среднего...

1
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
22.03.2013, 19:23 #2
при выходе из метода
C++
1
N1* ukn1();
временный объект созданный на стеке удаляется и возвращается указатель указывающий на мусор
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2013, 19:23
Привет! Вот еще темы с ответами:

Касательно указателей и функций - C++
Уважаемые, назрел вот какой вопрос. Делаю вот так: TVozmGrup MassVG; GetVGArroundVG(MassVG); void GetVGArroundVG(TVozmGrup...

Освобождение памяти из под Объектов в статическом массиве указателей - C++
Всем добрый вечер! Решил расширить программу из книжки Лафорте Р. ООП в С++ стр. 574 путем добавления функции удаления данных о конкретном...

Шаблоны функций и массив указателей - C++
Задание! Создайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее...

Вызовы функций с помощью указателей - C++
Составить программу которая использует вызовы функций с помощью указателей ------------------------ первая функция double...


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

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

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