У меня есть класс, в котором вектор является одной из переменных-членов. Внутри конструктора зарезервирована емкость вектора (класс VecUser использует объект Test):
class Test {
public:
Test(uint32_t size) {
this->v.reserve(size);
std::cout << v.capacity() << std::endl; // this prints 'size'
}
vector<uint32_t>& getV() { return v; }
private:
vector<uint32_t> v;
};
class VecUser {
public:
VecUser() {}
private:
void func() {
Test* test = new Test(32); // This prints '32'
vector<uint32_t> v = test->getV();
std::cout << v.capacity() << std::endl; // This prints '0'
}
};
Я думаю, что cout
в функции func()
должен печатать '32', а не '0'.
Но, после запуска, он печатает 0.
Почему зарезервированный вектор показывает, что его емкость равна 0?