Ниже, я не Объявление my_ints
в качестве указателя. Я не знаю, где будет выделена память. Пожалуйста, просветите меня здесь!В чем разница между этими двумя классами?
#include <iostream>
#include <vector>
class FieldStorage
{
private:
std::vector<int> my_ints;
public:
FieldStorage()
{
my_ints.push_back(1);
my_ints.push_back(2);
}
void displayAll()
{
for (int i = 0; i < my_ints.size(); i++)
{
std::cout << my_ints[i] << std::endl;
}
}
};
И здесь, я объявляю поле my_ints
как указатель:
#include <iostream>
#include <vector>
class FieldStorage
{
private:
std::vector<int> *my_ints;
public:
FieldStorage()
{
my_ints = new std::vector<int>();
my_ints->push_back(1);
my_ints->push_back(2);
}
void displayAll()
{
for (int i = 0; i < my_ints->size(); i++)
{
std::cout << (*my_ints)[i] << std::endl;
}
}
~FieldStorage()
{
delete my_ints;
}
};
main()
функцию для проверки:
int main()
{
FieldStorage obj;
obj.displayAll();
return 0;
}
Оба производит один и тот же результат. Какая разница?
Спасибо всем, кто указал на утечку памяти ... и на все ответы! – Srikanth