List C++ Tutorial

#include 
#include 
#include 
#include 
#include 
using namespace std;
class Player
{
   public:
   Player( const string& first_name = "John",
           const string& last_name = "Doe", 
           int height = 60,
           float field_goal_percentage = 10 ); 
           
   bool operator<( const Player& rhs ) const;
   float field_goal_percentage() const;
   string first_name() const;
   int height() const;  
   void height( int& feet, int& inches ) const;
   string last_name() const;
   void print() const;
   private:
   float field_goal_percentage_;
   string first_name_;
   int height_;   
   string last_name_;
};
inline
Player::Player( const string& first_name, const string& last_name,
   int height, float field_goal_percentage )
   : field_goal_percentage_( field_goal_percentage ),
     first_name_( first_name ), height_( height ),
     last_name_( last_name )
{} 
inline
float Player::field_goal_percentage() const
{  return field_goal_percentage_; }
inline
string Player::first_name() const
{  return first_name_; }
inline
int Player::height() const  // in inches
{  return height_; }
inline
void Player::height( int& feet, int& inches ) const
{
   feet = height() / 12;
   inches = height() % 12;
}
inline
string Player::last_name() const
{  return last_name_; }
void Player::print() const
{
   int feet, inches;
   height( feet, inches );
   string name( first_name() );
   name += " ";
   name += last_name();
   cout << setw( 20 ) << left << name << feet << " feet " << inches
      << " inches   Field goal percentage: "
      << field_goal_percentage() << endl;
}
inline
bool Player::operator<( const Player& rhs ) const
{ return last_name() < rhs.last_name(); }
inline
bool greater_height( const Player& lhs, const Player& rhs )
{ return lhs.height() > rhs.height(); }
inline
bool greater_field_goal_percentage( const Player& lhs,
   const Player& rhs )
{ return lhs.field_goal_percentage()
   > rhs.field_goal_percentage(); }
int main( )
{
   list players;
   players.push_back( Player( "A", "F", 78, 0.422 ) );
   players.push_back( Player( "B", "G", 72, 0.392 ) );
   players.push_back( Player( "C", "H", 85, 0.555 ) );
   players.push_back( Player( "D", "I", 90, 0.531 ) );
   players.push_back( Player( "E", "J", 84, 0.502) );
   // sort by name
   players.sort();
   for_each( players.begin(), players.end(),mem_fun_ref( &Player::print ) );
   // descending sort by height
   players.sort( greater_height );
   for_each( players.begin(), players.end(),mem_fun_ref( &Player::print ) );
   // descending sort by field goal percentage
   players.sort( greater_field_goal_percentage );
   for_each( players.begin(), players.end(),mem_fun_ref( &Player::print ) );
}