1

私はバックグラウンドから来て、Java最近学び始めましQtC++。いくつかのコーディングを行っているときに、オブジェクトの作成とメンバーの宣言についていくつかの疑問が浮かびました。

次のように宣言されたクラスがあるとします。

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);正しいですか?

4

1 に答える 1