Из документации Qt
QSharedDataPointer
Класс QSharedDataPointer
представляет указатель на неявно
общий объект. QSharedDataPointer
заставляет писать свои собственные неявно
Общие классы легко.
QSharedDataPointer реализует
поточно-ориентированный подсчет ссылок,
гарантируя, что добавление
QSharedDataPointers для вашего реентера
классы не сделают их не реентерабельными.
Неявное совместное использование используется многими 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 удалит
указатель, который он держит, когда идет
вне рамок, если нет других
QSharedPointer объекты ссылаются
это.
> QSharedPointer<MyObject> obj =
> QSharedPointer<MyObject>(new MyObject);
Итак, QSharedDataPointer используется для создания неявно разделяемых классов. Принимая во внимание, что QSharedPointer - это интеллектуальный указатель для подсчета ссылок, который указывает на классы.
EDIT
Читая Управление памятью в Qt? , я нашел эту ссылку http://blog.qt.io/blog/2009/08/25/count-with-me-how-many-smart-pointer-classes-does-qt-have/. Действительно отличное обсуждение различных умных указателей, которые есть у Qt (в текущем API их 8).