私はQtにかなり慣れていないので、メモリ管理やオブジェクトの寿命に関する基本的なことについて疑問に思っています。オブジェクトをいつ削除または破棄する必要がありますか?これは自動的に処理されますか?
次の例では、作成するオブジェクトのうち、削除する必要があるのはどれですか。が破棄さmyOtherClass
れるmyClass
と、インスタンス変数はどうなりますか?オブジェクトをまったく削除(または破棄)しないとどうなりますか?それは記憶の問題でしょうか?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
ご覧のとおり、これは初心者にとっては簡単なことですが、簡単な方法でこれについてどこで学ぶことができますか?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
->これが安全な理由ではありません。Qt 4.7.4では、QObjectの子が直接削除されます(delete
qobject.cpp、1955行を参照)。最初に子オブジェクトを削除しても安全である理由は、QObjectが削除されたときにQObjectがそれを忘れるように親に通知するためです。