С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 19.07.2009
Сообщений: 53
1

Какова последовательность действий, выполняемых конструктором ?

05.12.2017, 13:46. Показов 686. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
33
34
35
36
37
38
39
40
41
42
class A
{
    char m_c;
    int m_n;
 
public:
    A(char c, int n) : m_c(c), m_n(n)
    {}
    
    virtual void f()
    {
        int fa = 0;
    }
};
 
class B : public A
{
public:
    B() {}
    
    virtual void f()
    {
        int fb = 0;
    }
};
 
class C : virtual public A
{
public:
    C() {}
 
    virtual void f()
    {
        int fc = 0;
    }
};
 
void main()
{
    A* a = new B();
    delete a;
}

Конструктор:

(1) ищем блок памяти куда проинициализировать объект, на случай если он пустой. (поэтому пустой класс размера не ноль)
(2) считает размер всех полей
(3) смотрит, есть ли виртуальные функции, если есть, то инициализирует указатель на таблицу виртуальных функций
(3.5) - (???) где-то тут вызовутся конструкторы предков
(4) смотрит, есть ли виртуальные предки, под них выделяет и инициализирует указатели.
(4.5) - (???) где-то тут вызовутся конструкторы предков
(5) и в самом конце то, что он посчитал на этапе (2) под это наконец выделяется память на стеке / или в куче (Плюс прежде чем выделить память под объект - выполнил выравнивание (дефолтное или нами заданное через
#pragma pack(push,1) struct Foo { }; #pragma pack(pop)
(6) вышли из конструктора. ОБЪЕКТ СОЗДАН.


Помогите пожалуйста разобраться в вопросе, и источники, где об этом можно почитать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2017, 13:46
Ответы с готовыми решениями:

Как оформить алгоритм (последовательность) выполняемых действий на Activity?
Здравствуйте, у меня есть некоторое Activity, посредством которого должна выполняться некоторая...

Какова последовательность действий после установки оригинальной Windows 7?
До6рый всем вечер! Скачал оригинальный о6раз В7, установил Накатил о6новления Дров вроде 6ы в...

Какова последовательность действий при внесении изменений в XLA файлы?
Какова последовательность действий при внесении изменений в XLA файлы. У меня почему-то изменения...

В чем разница между конструктором по умолчанию и конструктором с параметрами?
Объясните пожалуйста в чем разница между конструктором по умолчанию и конструктором с параметрами,...

1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.12.2017, 17:34 2
Половина из того, что ты написал, лежит ниже уровня C++.
Память выделяется сразу без подсчётов. Компилятор знает, сколько какому объекту нужно.
0
05.12.2017, 17:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2017, 17:34
Помогаю со студенческими работами здесь

Последовательность действий
Прошу помощи в очень важном вопросе. Каким образом можно реализовать чёткую последовательность...

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

Последовательность действий
Есть такой код - при нажати на кнопку он сдвигает её влево и одновременно кнопка плавно исчезает: ...

Последовательность действий
Добрый вечер всем. Есть задача: нужно, чтобы каждую секунду на одном и том же месте появлялся иной...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru