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

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

Восстановить пароль Регистрация
 
Metal01
2 / 2 / 1
Регистрация: 18.10.2012
Сообщений: 17
22.03.2013, 19:11     Возврат указателей объектов из функций #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, потом он удалился, потом в код функции маин возвратилась ссылка на него, а потом из удаленного объекта вызвалась функция. Причём никаких ошибок во время работы не возникло. Я читал что при работе методов создаются промежуточные объекты,
так что я хер пойму что у меня удалилось? На что возвратился указатель?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 19:11     Возврат указателей объектов из функций
Посмотрите здесь:

C++ Вызовы функций с помощью указателей
C++ Использование указателей и функций
Способы создания объектов и арифметика указателей C++
C++ Касательно указателей и функций
Двухмерный массив указателей из элементов объектов класса C++
контейнер <list> из указателей объектов C++
Возврат указателя на массив указателей C++
C++ Освобождение памяти из под Объектов в статическом массиве указателей

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
22.03.2013, 19:23     Возврат указателей объектов из функций #2
при выходе из метода
C++
1
N1* ukn1();
временный объект созданный на стеке удаляется и возвращается указатель указывающий на мусор
Yandex
Объявления
22.03.2013, 19:23     Возврат указателей объектов из функций
Ответ Создать тему
Опции темы

Текущее время: 05:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru