Disconnecting
Prev | Chapter 2. Connecting your code to signals | Next

## Disconnecting

If you decide you no longer want your code to be called whenever a signal is emitted, you must remember the return value of `connect()`, which we've been ignoring until now.

`connect()` returns a `sigc::connection` object, which has a `disconnect()` member method. This does just what you think it does.

Also, sigc++ 3.6 adds `sigc::scoped_connection`. A scoped connection can be constructed or assigned from a normal/unscoped `sigc::connection`, whereupon it effectively takes ownership of the connection, and will automatically `disconnect()` it when the `sigc::scoped_connection` is destroyed (goes out of scope) or reassigned. This lets you tie whether a slot is called to the lifetime of a scoped connection object, e.g. as a class member, instead of having to manually disconnect. Scoped connections can be put in containers, or made ref-counted via `std::shared_ptr`. See the `sigc::scoped_connection` class documentation for examples.

Prev | Up | Next
Signals with parameters | Home | Chapter 3. Writing your own signals