Lesson 5 | External member functions |
Objective | Rewrite Person class using external member function |
class
, the scope resolution operator is used. To illustrate this, let us revisit the ch_stack class
from the previous module. We can change the declaration of push
, inside the declaration of class ch_stack
, to just a function prototype and define push
elsewhere.
When we define it, we write the name out fully using the scope resolution operator.
In this case, the function is not
implicitly inline.
const int max_len = 40;
class ch_stack {
public:
void reset() { top = EMPTY; }
void push(char c);
char pop() {
assert(top!= EMPTY);
return s[top--];
}
char top_of() {
assert(top!= EMPTY);
return s[top];
}
bool empty()
{ return (top == EMPTY); }
bool full()
{ return (top == FULL); }
private:
char s[max_len];
int top;
enum { EMPTY = -1, FULL = max_len - 1 };
};
void ch_stack::push(char c) //not inline { assert(top != FULL); top++; s[top] = c; }
person class
so it uses an external member function to print out its member data.