私はバックグラウンドから来て、Java
最近学び始めましQt
たC++
。いくつかのコーディングを行っているときに、オブジェクトの作成とメンバーの宣言についていくつかの疑問が浮かびました。
次のように宣言されたクラスがあるとします。
ClassA.h:
class ClassA {
private:
MyObject myObj;
QString *declaredArray;
QSharedPointer<MyObject> obj;
public:
void setInfo();
}
ClassA.cpp
void ClassA::setInfo() {
declaredArray = new QString[5];
obj = QSharedPointer<MyObject>(new MyObject, doDeleteLater);
}
MyObject myObj;
宣言されたヘッダーで何が起こったのですか? タイプのオブジェクトがMyObject
スタックで作成され、myObj
引数を取らないコンストラクターを使用して変数に割り当てられましたか? MyObject
それとも、オブジェクトを格納するために用意された空の変数のみが宣言されましたか?
スタックに作成された新しいオブジェクトを変数に割り当てるにはClassA.cpp
どうすればよいですか?myObj
definedArrayはヒープに作成された s の配列ですが、メモリ リークを避けるためint
に を含むデストラクタを追加する必要がありますか?delete declaredArray;
QSharedPointer<MyObject> obj;
宣言されたヘッダーで何が起こったのですか? への空のポインタがMyObject
作成されましたか? ClassA.cpp
( )内の割り当てはobj = QSharedPointer<MyObject>(new MyObject, doDeleteLater);
正しいですか?