SORU
22 Mart 2010, PAZARTESİ


Qt bellek yönetimi?

Qt için oldukça yeniyim ve bellek yönetimi ve nesneleri hayatı ile ilgili bazı temel şeyleri merak ediyorum. Ne zaman silmek ya da benim/nesneleri yok etmek gerekir mi? Bu herhangi bir otomatik olarak gerçekleştirilir?

Bu örnekte, nesneleri oluşturmak silmek gerekiyor mu? Sınıfım yok edilir örnek değişken myOtherClass ne olacak? Eğer silmek ve ya benim nesne yok; bellek için bir sorun olacak/bilmiyorum eğer doğru değilse ne olur?

Sınıfım.h

class MyClass
{

public:
    MyClass();
    ~MyClass();
    MyOtherClass *myOtherClass;
};

MyClass.cpp

MyClass::MyClass() {
    myOtherClass = new MyOtherClass();

    MyOtherClass myOtherClass2;

    QString myString = "Hello";
}

Bu ama nerede kolay bir şekilde öğrenebilir miyim? bir şeyler acemi-oldukça kolay gördüğünüz gibi

CEVAP
22 Mart 2010, PAZARTESİ


Eğer QObjects ile kendi hiyerarşi oluşturmak, yani yeni bir ebeveyn ile QObjects oluşturulmuş, yeniden

QObject* parent = new QObject();
QObject* child = new QObject(parent);

sonra parents yıkıcı child yok ilgilenir çünkü delete parent yeterlidir. (Sinyalleri göndererek yapar, el ile üst önce child bile silmek güvenlidir.)

Ayrıca çocuk sıralaması önemli değil ilk, silinemedi. Sipariş bir örnekyokkonu burada the documentation about object trees.

Eğer MyClass QObject bir çocuk değil şeyler yapıyor düz C şekilde kullanman gerekecek.

Ayrıca, QObjects üst–alt hiyerarşisi C sınıfı hiyerarşisi/devralma ağaç hiyerarşisi genellikle bağımsız olduğunu unutmayın. Bu, anlamına geliratanmış bir çocuğun ebeveyni doğrudan bir alt sınıf olması gerekmez. QObject yeterli olacaktır.

Olabilir, bazı kısıtlamalar ile kurucular için başka nedenler de var, ancak; gibi QWidget(QWidget* parent=0) nereye üst olmalı başka bir QWidget nedeniyle örneğin görünürlük bayraklar ve çünkü sen yaptın bazı temel düzeni böyle; ama Qt hiyerarşi sistemi genel olarak, izin için herhangi QObject olarak bir üst.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • audivila

    audivila

    5 HAZİRAN 2009
  • EminemMusic

    EminemMusic

    9 ŞUBAT 2007
  • Makeup Lover

    Makeup Lover

    12 HAZİRAN 2011