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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как запустить dll скомпиленную в Visual Studio 2012 в Windows XP http://www.cyberforum.ru/cpp-beginners/thread809867.html
При подключении этой dll появляется ошибка Unable to load DLL error=0 -or-, error=127 Нужны какие то системные dll от Visual Studio, раньше когда я работал только на Visual Studio 2008 было точно так же, но на Windows XP, можно было поставить полностью Visual Studio 2008 и проблема пропадала, сейчас Visual Studio 2012 на Windows XP не установишь, а dll как то запустить нужно. Подскажите кто в...
C++ default компилятор под Windows 7 Хочу скомпилировать себе mono develop погонять, но сам проект с джитхаба не запускается говорит мол версия 2010 слишком стара, какие есть еще способы скомпилировать проект (подскажите как называется компилятор вижлы если его из командной строки пускать) ? http://www.cyberforum.ru/cpp-beginners/thread809864.html
запись в файл C++
Помогите пожалуйста мне нужно считать данные из одного файла и потом с некоторыми изменениями записать их в другой файл. Вот мой код но он не записывает нужную информацию и вывод разные буквы латинского алфавита #include<iostream> #include<fstream> #include<cstdlib> using namespace std; int main()
C++ Простейший список
Никак не получается понять, как создавать и выводить списки. В программе пытался создать простейший списсок. #include <stdio.h> #include <stdlib.h> struct list { long long numb; struct list *next; } *head, *temp;
C++ ошибка в коде "Invalid argument " http://www.cyberforum.ru/cpp-beginners/thread809836.html
Привет все мне дали задание создать библиотеку для комплексных чисел вот начал делать и столкнулся с ошибкой main.ppp #include <cstdlib> #include <iostream> #include <"komplex.h"> using namespace std; class KOMPLEX {double a,b;
C++ Массив. Положительные элементы массива а, записанные в том же порядке + отрицательные элементы массива b, записанные в обратном порядке Из двух массивов а, а, ...., а и b, b, ....., b, создать следующие массивы: 1. Положительные элементы массива а, записанные в том же порядке + отрицательные элементы массива b, записанные в обратном порядке. В коде надо сделать функцию ввода и вывода. Подскажите как дописать код и есть ли ошибки в этом? #include <iostream> using namespace std; int mass(float*masA, int n, float*masB,... подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056

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

16.03.2013, 05:43. Просмотров 4550. Ответов 6
Метки (Все метки)

на срр-reference нашёл тему про виртуальный деструктор, но я так и не понял (да там и не объясняется), почему именно конструктор класса Object вызывается вторым по счёту после вызова конструктора базового класса? Ведь он же по идее находится внутри класса Derived, следовательно сначала должен вызваться конструктор Derived и после инициализации объекта своим конструктором уже создать объект класса Object и вызвать его конструктор. Но всё происходит иначе:
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
#include <iostream>
 
using namespace std;
 
class Object  
{
  public:
    Object() { cout << "Object::ctor()" << endl; }
   ~Object() { cout << "Object::dtor()" << endl; }
};
 
class Base 
{
  public:
    Base() { cout << "Base::ctor()" << endl; }
    virtual ~Base() { cout << "Base::dtor()" << endl; } 
    virtual void print() = 0;
};
 
class Derived: public Base 
{
  public:
    Derived() { cout << "Derived::ctor()" << endl; }
   ~Derived() { cout << "Derived::dtor()" << endl; }    
    void print() {}   
    Object  obj;
};
 
int main ()
{
    Base * p = new Derived;
    delete p;
    return 0;
}
Bash
1
2
3
4
5
6
7
8
ilyuha21st@coldshoot:~/Projects$ ./prog
Base::ctor()
Object::ctor()
Derived::ctor()
Derived::dtor()
Object::dtor()
Base::dtor()
ilyuha21st@coldshoot:~/Projects$
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru