作成されたクラスにキーワードとそれを指すポインターをスローnew
させ、次にクラスからメソッドを呼び出してクラス自体を破棄する場合、ポインターからメモリを解放する必要がありますか?そのような何か:
.h
#include <list>
#include <iostream>
class Test
{
public:
Test();
~Test();
void destroy();
bool operator==(Test& right){return id == right.id;};
private:
static int count;
std::list<Test*>::size_type id;
static std::list<Test*> instances;
};
.cpp
#include "Test.h"
int Test::count = 0;
std::list<Test*> Test::instances;
Test::Test()
{
instances.push_back(this);
id = count++;
}
Test::~Test()
{
}
void Test::destroy()
{
for(auto t : instances){
if(*t == *this)
{
delete t;
break;
}
}
}
ソース
Test* n = new Test();
n->destroy();
だから私の質問は、nが指すメモリが解放されるということですか?または私は電話する必要がありますdelete n