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 _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest