Вопрос

В чем разница между этими двумя типами указателей? Насколько я могу прочитать, qharedpointer может хорошо справиться с ситуацией, так что такое необходимость в qshareddatapointer?

Это было полезно?

Решение

От QT документацииQshareddatapointer.

Класс QSharedDatapointer представляет указатель на неявный общий объект. QSharedDatapointer облегчает писать свои собственные неявные классы. QSharedDatapointer реализует безопасную резьбовую ссылку, подсчитав, что обеспечивает добавление QSharedDatapointers к вашим классам Reentrant, не сделает их нерентарными. Неявный обмен используется множеством классов QT для объединения скорости и эффективности указателей памяти с простотой использования классов. См. Страницу общих классов для получения дополнительной информации.

Пример использования -

 #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.

Класс QSharedPointer проводит сильную ссылку на общий указатель QSharedPointer - это автоматический, общий указатель в C ++. Он ведет себя точно так же, как обычный указатель для нормальных целей, включая уважение к конденсности. Qsharedpointer будет удалять указатель, который он удерживает, когда он выходит из приспособления, при условии, что никаких других объектов QSharedPoine не ссылается на него.

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

Итак, QSharedDatapointer используется для создания неявных общих классов. Принимая во внимание, что qsharedpointer - это ссылка, подсчитывая умный указатель, который указывает на классы.


РЕДАКТИРОВАТЬ

При чтении Управление памятью в Qt?, Я нашел эту ссылку http://blog.qt.io/blog/2009/08/25/count-with-me-how-many-smart-pointer-classes-does-qt-have/. Отказ Действительно отличное обсуждение различных умных указателей Qt имеет (текущий API имеет 8).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top