0 / 0 / 1
Регистрация: 04.08.2016
Сообщений: 96
1

Передача объектов функции. Два обращения к функции деструктора

27.10.2016, 22:24. Показов 496. Ответов 5
Метки c++ (Все метки)

В книге этот код должен 2 раза обращаться к функции деструктора, то есть результатом программы должно быть:
Создание
10
Разрушение
Разрушение.
У меня же выводится без последнего "Разрушения". С чем это может быть связано?Чисто любопытно VS 2015

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
32
// Конструкторы, деструкторы и передача объекта.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
 
class myclass {
    int val;
public:
    myclass(int i) { val = i; std::cout << "Создание\n"; }
    ~myclass() { std::cout << "Разрушение\n"; }
    int getval() { return val; }
};
 
void display(myclass ob) {
    std::cout << ob.getval() << '\n';
}
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
 
    myclass a(10);
 
    display(a);
 
    system("pause");
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2016, 22:24
Ответы с готовыми решениями:

Передача объектов в функции
Добрый день. После C изучал C#, теперь перешел к плюсам. Столкнулся с непониманием. В каких...

Классы. Программирование алгоритмов с использованием конструктора, деструктора, friend - функции инициализации set() и функции вывода результатов prin
Братаны, выручайте!:help: Общая постановка. Пользовательский класс Х должен содержать необходимые...

Классы. Программирование алгоритмов с использованием конструктора, деструктора, friend - функции инициализации set() и функции вывода результатов pri
Братаны, выручайте! Общая постановка. Пользовательский класс Х должен содержать необходимые...

Передача массива объектов функции
Выбивает о каком-то недопустимом внешнем символе, подскажите что не так. Вот цикл, который...

5
82 / 82 / 44
Регистрация: 14.07.2013
Сообщений: 410
27.10.2016, 22:26 2
здесь создается только один объект поэтому один деструктор вызывается
1
2756 / 1910 / 569
Регистрация: 05.06.2014
Сообщений: 5,560
27.10.2016, 22:29 3
Цитата Сообщение от kindertei Посмотреть сообщение
У меня же выводится без последнего "Разрушения". С чем это может быть связано?Чисто любопытно VS 2015
display заинлайнилось, создания копии объекта не произошло, соответственно и второго вызова деструктора при уничтожении копии тоже не произошло.

Добавлено через 42 секунды
Цитата Сообщение от IchimaruGin Посмотреть сообщение
здесь создается только один объект поэтому один деструктор вызывается
Два - display принимает копию объекта, а не ссылку на уже существующий.
1
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
27.10.2016, 22:33 4
Цитата Сообщение от kindertei Посмотреть сообщение
У меня же выводится без последнего "Разрушения". С чем это может быть связано?Чисто любопытно VS 2015
А так?
C++
1
2
3
4
5
6
7
8
9
    setlocale(LC_ALL, "RUS");
 
    {
        myclass a(10);
 
        display(a);
    }
 
    system("pause");
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
27.10.2016, 22:42 5
Цитата Сообщение от kindertei Посмотреть сообщение
У меня же выводится без последнего "Разрушения". С чем это может быть связано?
Это связанно с тем, что второе сообщение "Разрушение" выводится после функции system("pause");. Вы его просто не успеваете заметить.
1
82 / 82 / 44
Регистрация: 14.07.2013
Сообщений: 410
27.10.2016, 22:44 6
что бы не использовать system("pause") запускай без отладки (start without debugging)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2016, 22:44
Помогаю со студенческими работами здесь

Передача объектов в функции и методы
Как лучше передавать объекты в функции и методы и почему?

Delphi, визуальное программирование, функции, использование несколько объектов через функции
Здорово, ребята. Вот когда писал программку, возникла такая мысль - можно ли использовать одну и...

Передача функций в функции, замена инициализации функции ключевыми словами
Хочу сделать фишку по типу property в c++/cli int property a{ int get(){ return value; } }...

Ошибка обращения к удалённой функции?
Всем привет, пишу класс кулькулятор с помощью стека. И выходит вот такая непонятная ошибка, пишет,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru