Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как запустить dll скомпиленную в Visual Studio 2012 в Windows XP https://www.cyberforum.ru/ cpp-beginners/ thread809867.html
При подключении этой dll появляется ошибка Unable to load DLL error=0 -or-, error=127 Нужны какие то системные dll от Visual Studio, раньше когда я работал только на Visual Studio 2008 было точно...
C++ default компилятор под Windows 7
Хочу скомпилировать себе mono develop погонять, но сам проект с джитхаба не запускается говорит мол версия 2010 слишком стара, какие есть еще способы скомпилировать проект (подскажите как называется...
C++ запись в файл https://www.cyberforum.ru/ cpp-beginners/ thread809861.html
Помогите пожалуйста мне нужно считать данные из одного файла и потом с некоторыми изменениями записать их в другой файл. Вот мой код но он не записывает нужную информацию и вывод разные буквы...
C++ Простейший список Никак не получается понять, как создавать и выводить списки. В программе пытался создать простейший списсок. #include <stdio.h> #include <stdlib.h> struct list { long long numb; struct... https://www.cyberforum.ru/ cpp-beginners/ thread809844.html
C++ ошибка в коде "Invalid argument "
Привет все мне дали задание создать библиотеку для комплексных чисел вот начал делать и столкнулся с ошибкой main.ppp #include <cstdlib> #include <iostream> #include <"komplex.h"> using...
C++ Массив. Положительные элементы массива а, записанные в том же порядке + отрицательные элементы массива b, записанные в обратном порядке Из двух массивов а, а, ...., а и b, b, ....., b, создать следующие массивы: 1. Положительные элементы массива а, записанные в том же порядке + отрицательные элементы массива b, записанные в обратном... https://www.cyberforum.ru/ cpp-beginners/ thread809806.html
C++ Ошибка в функции #include "stdafx.h" #include <iostream> using namespace std; int main() { const int a = 2, b = 4, c = 5; float d,e,x1,x2,y1,y2; int c,k,p; https://www.cyberforum.ru/ cpp-beginners/ thread809796.html Определить наименьшее время (число полных минут), которые должны пройти до того момента, когда часовая и минутная стрелки на циферблате совпадут C++
Нужно ввести целые числа m и n (часы и минуты), 0 <= m <= 11, 0 <= n <= 59, которые определяют время суток. Определить наименьшее время (число полных минут), которые должны пройти до того момента,...
C++ поиск максимума в двумерном массиве, где ошибка // lab2_1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream> https://www.cyberforum.ru/ cpp-beginners/ thread809786.html C++ почему PRINTF не работает? https://www.cyberforum.ru/ cpp-beginners/ thread809785.html
есть файл с следующим содержаним: aa fr ab ty ac qw .. az re нужно найти в этом файле комбинацию ab и во второй файл записать 2 символа, стоящие после пробела. я записываю в массив что d='a',...
графическая оболочка C++
Возник вопрос с таким заданием: 1)Нужно создать абстрактный класс "геометрические фигуры" сделать 3 дочерних класса, треугольник, квадрат и шестиугольник (равносторонние) эту часть я сделал...
C++ Правильно ли я понял условие ? Условие: Дан массив квадратных матриц. Определить, найдется ли в этом массиве пара взаимно обратных матриц 1) Нахожу обратную матрицу для очередной матрицы 2) Сравниваю полученную обратную... https://www.cyberforum.ru/ cpp-beginners/ thread809770.html
Эксперт С++
5046 / 3107 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
21.03.2013, 13:31 0

Порядок вызова конструкторов - C++ - Ответ 4286989

21.03.2013, 13:31. Показов 9954. Ответов 6
Метки (Все метки)

Ответ

Цитата Сообщение от xtorne21st Посмотреть сообщение
silent_1991, Мне иногда кажется, что они как-то вызываются рекурсивно... Ну типа вызывается объект класса Derived, соответственно вызывается конструктор Derived, но он сразу не возвращает значение (да и вообще не выполняет каких либо действий), а передает управление по иерархии классов вниз, и так происходит пока не нащупает "дно", а затем начинается возврат значений.
Конструктор вообще никаких значений не возвращает. И "рекурсия" в данном случае неверный термин. А вызываются конструкторы действительно так, как вы сказали - конструктор самого нижнего в иерархии класса (иерархию принято представлять так: базовый класс вверху, производный - внизу; соответственно, то, что вы назвали "дном" - на самом деле вершина иерархии) вызывает конструктор своего родителя, тот, в свою очередь, своего родителя, и так происходит до самого верха иерархии. После отработки конструктора самого базового класса начинается работа конструктора следующего в иерархии класса, затем следующего, и в конце концов последним завершит свою работу конструктор класса, находящегося в самом низу иерархии. Это всё для одиночного наследования. Для множественного наследования всё так же, только конструктор производного класса вызывает не один, а несколько конструкторов всех базовых классов в порядке, перечисленном в списке родителей. Таким образом, здесь получается не список, а дерево вызовов с обходом в глубину.

Вернуться к обсуждению:
Порядок вызова конструкторов C++
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2013, 13:31
Готовые ответы и решения:

Порядок вызова конструкторов
Всем доброго дня. Наткнулся в коде на интересные грабли: test.cpp #include &quot;test.h&quot; Test...

Порядок вызова конструкторов
Есть классы First и Second. Класс Second наследуется от First. Я имею ввиду: class Second:...

Порядок вызова конструкторов/деструкторов
Вопрос чисто теоретический. Попробую сформулировать, не ругайте если получится коряво. Например,...

Классы, наследование, порядок вызова конструкторов
допустим у меня эсть два класса class a { publc: char *n; a() { n= new char ; } ~a()

6
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2013, 13:31

Порядок вызова конструкторов при множественном наследовании
Здравствуйте, меня интересует вопрос, как изменить последовательность вызова конструкторов базовых...

Порядок вызова конструкторов при присваивании объектов одного класса
Имеется код ниже. Wein dres = rom; Где dres и rom объекты класса Wein. Класс Wein имеет...

Странный порядок вызова конструкторов и передача временного обьекта в функцию в качестве неконстантной ссылки
Есть код //g++ 5.4.0 #include &lt;iostream&gt; struct foo { foo(int){std::cout &lt;&lt; &quot;int...

Очерёдность вызова конструкторов класса
У меня есть 2 класса, к примеру Base и Mod. Mod является наследником Base. Классу Mod...

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