以下、私はではありません。を指針としてmy_ints
と宣言しています。私はメモリがどこに割り当てられるのか分からない。ここに私を教えてください!これら2つのクラスの違いは何ですか?
#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