Παράδειγμα
Το παρακάτω παράδειγμα ορίζει και χρησιμοποιεί
την κλάση point που - εξεζητημένα - εκμεταλλεύεται όλα τα στοιχεία που
έχουν αναφερθεί:
point.h
class point {
private:
        int x, y;
        static int numpoints;
public:
        point();                        // Default contructor
        point(int sx, int sy);          // Other constructor
        ~point();                       // Destructor
        int getx() const;               // Access functions
        int gety() const;
        void display();                 // Display member function
        void setpos(int sx, int sy);    // Set position
        static int points_used();       // Return number of points
        friend double distance(point p1, point p2);     // Display friend function
        friend void display(point &p);  // Display friend function
};
point.cpp
#include "point.h"
#include <iostream.h>
#include <math.h>
int point::numpoints = 0;
point::point(int sx, int sy)
{
        x = sx;
        y = sy;
        numpoints++;
}
point::point()
{
        x = y = 0;
        numpoints++;
}
point::~point()
{
        numpoints--;
}
int
point::getx() const
{
        return (x);
}
int
point::gety() const
{
        return (y);
}
// Member function; used as a.display();
void
point::display()
{
        cout << "(" << x << "," << y << ")\n";
}
// Friend function; used as display(a)
void
display(point& p)
{
        cout << "(" << p.x << "," << p.y << ")\n";
}
double
sqr(double x)
{
        return (x * x);
}
double
distance(point p1, point p2)
{
        return (sqrt(sqr(p1.x - p2.x) + sqr(p1.y - p2.y)));
}
void
point::setpos(int sx, int sy)
{
        this->x = sx;
        point::y = sy;
}
int
point::points_used()
{
        return (numpoints);
}
main.cpp
#include <iostream.h>
#include "point.h"
main()
{
        point a(1, 2);
        point b, *c;
        c = new point(5, 5);
        b.setpos(6, 6);
        a.display();            // Member function
        display(b);             // Friend function
        c->display();
        cout << "Distance from a to b = " << distance(a, b) << "\n";
        cout << "points used = " << point::points_used() << "\n";
        delete(c);
        cout << "points used = " << point::points_used() << "\n";
        return (0);
}