Table of Contents
Glib::RefPtr is a smartpointer. Specifically, it is a
reference-counting smartpointer. You might be familiar with
std::shared_ptr<>, which are also smartpointers.
Glib::RefPtr<> is an alias for
which is reference-counting.
Glib::RefPtr<> was introduced
long before there was a reference-counting smartpointer in the C++ Standard Library.
If you make your own
Glib::ObjectBase-derived classes with
create() methods that return a
you must use
Glib::make_refptr_for_instance() in your
create() methods. This function creates a
with a special deleter, which handles the reference-count for the wrapped C object.
A smartpointer acts much like a normal pointer. Here are a few examples.
You can copy
RefPtrs, just like normal pointers. But
unlike normal pointers, you don't need to worry about deleting the underlying
auto refPixbuf = Gdk::Pixbuf::create_from_file(filename); auto refPixbuf2 = refPixbuf;
Of course this means that you can store
standard containers, such as
std::list<Glib::RefPtr<Gdk::Pixbuf>> listPixbufs; auto refPixbuf = Gdk::Pixbuf::create_from_file(filename); listPixbufs.push_back(refPixbuf);