私はいくつかの構造体を持っています:
struct A
{
const char* name_;
A* left_;
A* right_;
A(const char* name):name_(name),
left_(nullptr),
right_(nullptr){}
A(const A&);
//A(const A*);//ToDo
A& operator=(const A&);
~A()
{
/*ToDo*/
};
};
/*Just to compile*/
A& A::operator=(const A& pattern)
{
//check for self-assignment
if (this != &pattern)
{
void* p = new char[sizeof(A)];
}
return *this;
}
A::A(const A& pat)
{
void* p = new char[sizeof(A)];
A* tmp = new (p) A("tmp");
tmp->~A();
delete tmp;//I WONDER IF HERE I SHOULD USE DIFFERENT delete[]?
}
int _tmain(int argc, _TCHAR* argv[])
{
A a("a");
A b = a;
cin.get();
return 0;
}
私はこれが理想からは程遠い、そして完成からは程遠いことを知っています。しかし、私は自分の記憶を適切な方法で削除しているかどうかを知りたいです(適切な方法を教えてはいけません。私はそれを自分で理解しようとしています)。
これは私にとって本当に重要な別の質問へのリンクです。