4 Function (method) members

Let us consider our example class, Pixel. The subroutine pixelReset resets the coordinate of a pixel. In other words, it sort of belongs to the Pixel class. In C, there is no way to associate the subroutine pixelReset with a struct called Pixel.

However, in C++, we can actually associate a subroutine with the definition of a class. In this case, we can redefine our class as follows:

class Pixel
{
  public:
    int x, y; // coordinate
    void reset(void);
};

The extra line states that there is a member function reset associated with the class Pixel. Next, we can define the member function:

void Pixel::reset(void)
{
  x = 0;
  y = 0;
}

Where is the parameter? How do we know whose x and y are getting reset? Good questions, indeed!

Let us example how a variable of the class Pixel can be used.

Pixel dotA;
dotA.reset(); // reset dotA to the origin

We are calling the method reset of object dotA. Consequently, the x and y of subroutine reset refers to those of dotA.

In other words, all data and function members of a class are, by default, available to the definition of a function member. Furthermore, each data member reference in a member function refers to the data member of the object associated with the invocation.

This means that in dotB.reset(), the member subroutine reset accesses the data members x and y of dotB.

One advantage of this approach is that there is no need to use the dot notation to access data members inside the definition of a member function. This encourages a programmer to think more in object oriented terms.

At this point, the availability of member functions is merely a syntactic change compared to our usual ways of defining subroutines to handle a particular type. However, as we will see later in this module, as well as other modules depending on this module, member functions is a very important feature of C++.

Copyright © 2006-09-26 by Tak Auyeung