Почему мой унаследованный конструктор вызывает мой базовый конструктор по умолчанию
Может быть, я просто плохо задаю свой вопрос в 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 ответ
Потому что родительский класс может отвечать, например, за инициализацию переменных-членов (включая потенциально выделяющуюся память), от которых впоследствии зависит подкласс.