[Interest] assigning to QSharedPointer
Thiago Macieira
thiago.macieira at intel.com
Tue May 30 07:33:47 CEST 2017
On segunda-feira, 29 de maio de 2017 17:50:23 PDT Hamish Moffatt wrote:
> Which of the following three ways to create a new object and manage it
> with QSharedPointer is preferable?
>
> class Foo;
>
> QSharedPointer<Foo> f1, f2, f3; // class members
>
>
> f1.reset(new Foo);
Works fine.
inline void reset(T *t)
{ QSharedPointer copy(t); swap(copy); }
> f2 = QSharedPointer<Foo>::create(); // or even f2 = f2.create()
Also works fine and does the same thing:
QSharedPointer &operator=(QSharedPointer &&other) Q_DECL_NOTHROW
{
QSharedPointer moved(std::move(other));
swap(moved);
return *this;
}
The difference is the use of create().
> f3.swap(QSharedPointer<Foo>::create()); // or f3.swap(f3.create()))
This one doesn't compile.
> I find #2 the easiest to read. Do #2 and #3 perform any differently?
A simple read of the source code would have answered.
> Anything else to consider?
Yes: use create().
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Interest
mailing list