// @topic T00760 Initializer lists and const qualifiers // @brief 10/18/2012 -- const data members, const references, const member functions #include <iostream> #include <string> class Graph {}; class Point { const std::string m_tag; Graph& m_g; int m_x; int m_y; public: Point( Graph& gr, int xx, int yy ) : m_tag( get_my_tag() ), // ctr initializer list m_g( gr ), m_x( xx ), m_y( yy ) { } // print() doesn't change anything, so it is made const void print() const { std::cout << get_my_tag() << " " << m_x << ":" << m_y; } // this is also const member function std::string get_my_tag() const { return "demo"; } };//class Point // function foo() takes a const reference to an object: void foo( Point const& pt ) { // because Point::print() is a const member function, // it can be invoked using const reference pt: pt.print(); } int main() { Graph gr; Point pt_origin( gr, 10, 20 ); foo( pt_origin ); return 0; }