## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

## Member Functions

Member functions implement the behavior of a class. Member functions can be defined within the class definition or separately. You can use the `inline` function specifier and either the `static` or `virtual` (but not both) specifier. (See Chapter 2 for more about function specifiers.) Defining a member function within the class definition declares the function inline, even if you do not use the `inline` specifier.

A nonstatic member function can have `const`, `volatile`, or both function qualifiers. Qualifiers appear after the function parameters and before the exception specification. Function qualifiers are discussed in the next section, Section 6.3.2.

Example 6-8 shows various member function declarations and definitions.

Example 6-8. Declaring and defining member functions
`#include <cmath> #include <iostream> #include <istream> #include <ostream> class point { public: typedef double value_type; // Constructors are special member functions. explicit point(value_type x = 0.0, value_type y = 0.0); value_type x( ) const { return x_; } value_type y( ) const { return y_; } void x(value_type x) { x_ = x; } void y(value_type y) { y_ = y; } value_type distance( ) const; bool operator==(const point& pt) const; inline static point origin( ); private: value_type x_, y_; }; point::point(value_type x, value_type y) : x_(x), y_(y) {} point::value_type point::distance( ) const { return std::sqrt(x() * x() + y( ) * y( )); } bool point::operator==(const point& pt) const { return x() == pt.x() ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required