Почему мой унаследованный конструктор вызывает мой базовый конструктор по умолчанию

Может быть, я просто плохо задаю свой вопрос в Google, но не могу найти ответ на свою проблему. Моя проблема в том, что мой унаследованный конструктор вызывает мой базовый конструктор по умолчанию, и я не совсем понимаю, почему. Вот моя упрощенная версия.

Пример:

a.cpp

#include <iostream>
#include "A.h"

using namespace std;

A::A()
{
    cout << "A" << endl;
}

B.cpp

#include <iostream>
#include "B.h"

using namespace std;

B::B()
{
    cout << "B" << endl;
}

B::B(int x)
{
    cout << "B" << x << endl;
}

Source.cpp

#include <iostream>
#include "A.h"
#include "B.h"

using namespace std;

int main() {
    B * b = new B();
    cout << "---" << endl;
    B * b2 = new B(2);

    system("PAUSE");
    return 0;
}

Выход:

A
B
---
A
B2
Press any key to continue . . .

Я просто хочу посмотреть, что делает конструктор B. Как это:

B
---
B2
Press any key to continue . . .

1 ответ

Потому что родительский класс может отвечать, например, за инициализацию переменных-членов (включая потенциально выделяющуюся память), от которых впоследствии зависит подкласс.

Другие вопросы по тегам