Если я сделаю размер 2 std::vector
из производного класса, конструктор вызывается только один раз.Если я создаю вектор размера 2 базового класса, конструктор вызывается дважды.
Обычно я не публикую полный код, который дублирует проблему, но в этом случае его можно сделать довольно коротким:
#include <iostream>
#include <vector>
class Base {
public:
Base() { std::cout << "base constructor" << std::endl; }
virtual ~Base() {}
};
class Derived : public Base {
public:
Derived() { std::cout << "derived constructor" << std::endl; }
};
int main() {
std::vector<Base> base(2);
std::cout << "----------------" << std::endl;
std::vector<Derived> derived(2);
return 0;
}
Вывод для меня выше:
base constructor
----------------
base constructor
derived constructor
Почему вывод не следующий:
base constructor
base constructor
----------------
derived constructor
derived constructor
Я использую gcc 4.5.2 в Linux.