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

Лишнее удаление родителя при создании класса наследника - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка операторов при работе с матрицей http://www.cyberforum.ru/cpp-beginners/thread1211106.html
Ребята, помогите пожалуйста исправить ошибку. У меня в программе вроде не работает два оператор-функции. С ними работаю первый раз. За грубейшие ошибки извиняюсь. :( Вот моя программа: #include...
C++ Сохранение данных массива из файла в виде матрицы В файле данные одномерного массива, нужно эти данные сохранить в другой файл в виде матрицы 3x5, подскажите как это сделать. Пишу курсач, застрял на этом моменте. Вот код который написал: ... http://www.cyberforum.ru/cpp-beginners/thread1211088.html
В главной функции ввод двумерного массива с файла и вывод полученных результатов в конец входного файла C++
Составить программу на языке C++, состоящую из двух функций с использованием указателей. В главной функции выполнить ввод двумерного массива с файла и вывод полученных результатов в конец входного...
C++ Вычислить значение выражения
Составить программу на языке С++ для обработки одномерных массивов с использованием указателей: 1. Ввести n элементов одномерного массива с входного файла; 2. Вычислить указанное выражение;...
C++ C++ обработка двумерного массива с использованием указателей и входных и выходных файлов http://www.cyberforum.ru/cpp-beginners/thread1211056.html
Составить программу на языке C++ для обработки двумерных массивов с использованием указателей и входных и выходных файлов. Дана матрица n на n. Сформировать новую матрицу n+1 на n+1, где n+1...
C++ Выравнивание строк до заданной длины Нужно выровнять строку по правому краю до заданной длины. #include <iostream> #include <string> using namespace std; void pad(string& s, int len) { if (s.length() >= len) return;... подробнее

Показать сообщение отдельно
Jewbacabra
Эксперт PHP
2546 / 2138 / 802
Регистрация: 24.04.2014
Сообщений: 6,277
18.06.2014, 10:50
kylroma,
Цитата Сообщение от kylroma Посмотреть сообщение
B d(5);
тут сначала 5 приводится к A и создается временный объект типа A (выводит create A = 5)
потом полученный объект передается в качестве аргумента в конструктор B(A) по значению, т.е создается копия A (конструктора копий в классе A нету, будет создан по умолчанию и по этому ничего не выводит) и создается объект B (create B)
Потом временный объект удаляется (выводит delete A)
К завершению работы удаляется объект B (выводит delete B) и A (delete A)

Если хочешь чтобы по 3 раза вывел create и delete добавь в класс A конструктор копий:
C++
1
2
3
4
A(const A& aa){
        std::cout << "create A(A)" << std::endl; 
        if (this != &aa) a = aa.a;
    }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru