Appendix A. The RefPtr smartpointer

## Appendix A. The RefPtr smartpointer

`Glib::RefPtr` is a smartpointer. Specifically, it is a reference-counting smartpointer. You might be familiar with `std::auto_ptr<>`, which is also a smartpointer, but `Glib::RefPtr<>` is much simpler, and more useful. We expect a future version of the C++ Standard Library to contain a reference-counting shared smartpointer, and a future version of gtkmm might possibly use that instead.

Reference

A smartpointer acts much like a normal pointer. Here are a few examples.

## Copying

You can copy `RefPtr`s, just like normal pointers. But unlike normal pointers, you don't need to worry about deleting the underlying instance.

    Glib::RefPtr<Gdk::Pixbuf> refPixbuf = Gdk::Pixbuf::create_from_file(filename);
    Glib::RefPtr<Gdk::Pixbuf> refPixbuf2 = refPixbuf;

Of course this means that you can store `RefPtr`s in standard containers, such as `std::vector` or `std::list`.

    std::list< Glib::RefPtr<Gdk::Pixbuf> > listPixbufs;
    Glib::RefPtr<Gdk::Pixbuf> refPixbuf = Gdk::Pixbuf::create_from_file(filename);
    listPixbufs.push_back(refPixbuf);

Chapter 31. Contributing |  | Dereferencing