Frage

Was ist der Unterschied zwischen diesen beiden Arten von Zeigern? Soweit ich lesen kann, QSharedPointer Situation gut umgehen kann, also was ist die Notwendigkeit für QSharedDataPointer?

War es hilfreich?

Lösung

Von Qt-Dokumentation QSharedDataPointer

  

Die QSharedDataPointer Klasse   stellt einen Zeiger auf eine implizit   gemeinsames Objekt. QSharedDataPointer   macht Ihre eigene implizit schreiben   gemeinsam genutzten Klassen einfach.   QSharedDataPointer Geräte   threadsicher Referenzzählung,   sichergestellt wird, dass die Zugabe   QSharedDataPointers zu Ihrem einspringenden   Klassen werden sie nicht nichtablaufinvarianten machen.   Implizite Sharing wird von vielen Qt verwendet   Klassen, die Geschwindigkeit zu kombinieren und   Speichereffizienz von Zeigern mit der   Benutzerfreundlichkeit von Klassen. Siehe die Geteilt   Klassen-Seite für weitere Informationen.

Beispiel für die Verwendung -

 #include <QSharedData>
 #include <QString>

 class EmployeeData : public QSharedData
 {
   public:
     EmployeeData() : id(-1) { }
     EmployeeData(const EmployeeData &other)
         : QSharedData(other), id(other.id), name(other.name) { }
     ~EmployeeData() { }

QSharedPointer

  

Die QSharedPointer Klasse hält ein   starker Bezug auf einen gemeinsamen Zeiger   Die QSharedPointer ist eine automatische,   Shared-Zeiger in C ++. es verhält sich   genau wie ein normaler Zeiger für   normale Zwecke, insbesondere zur Wahrung   Konstantheit. QSharedPointer löscht   der Zeiger es hält, wenn es geht   out of scope, sofern keine andere   QSharedPointer Objekte verweisen   es.

>  QSharedPointer<MyObject> obj =
>          QSharedPointer<MyObject>(new MyObject);

So wird der QSharedDataPointer verwendet implicititly gemeinsame Klassen machen zu schaffen. Während QSharedPointer ist ein Referenzzählung Zeiger intelligenten, dass Punkte auf Klassen.


Bearbeiten

Wenn Speicherverwaltung in Qt zu lesen? , fand ich diesen Link http: //blog.qt.io/blog/2009/08/25/count-with-me-how-many-smart-pointer-classes-does-qt-have/ . Eine wirklich ausgezeichnete Diskussion der verschiedenen Smart-Pointer Qt hat (aktuelle API hat 8).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top