I'm try to understand this boost::asio example:
http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/example/echo/async_tcp_echo_server.cpp

I'm confused about the server class constructor:
server(boost::asio::io_service& io_service, short port) : io_service_(io_service), acceptor_(io_service, tcp::endpoint(tcp::v4(), port))

I don't understand the single colon after the main def ( : io_service, etc) it looks like when you want override the default constructor on an inherited class but the class is not inherited. The server class is just a regular class.

I can read straight forward C++ code, and I understand concepts of inheritance, overloading, etc but this not something I recognise from learning C++ 10 years ago - can someone explain?