13.3 Using a Class

I l @ ve RuBoard

Using a class is much like using a structure. Declaring a class variable is the same, except you use the word class instead of struct :

 class stack a_stack;        // Stack we want to use 

The word class is not needed and is frequently omitted:

 stack a_stack;        // Stack we want to use 

You access the members of a structure using a dot; for example:

 structure.field = 5; 

Accessing the members of a class is similar, except that the members of a class can be both data and functions. Also, you can access only the members that are public.

To call the init member function of the stack class, all you need to do is this:

 a_stack.init(  ); 

The push and pop member functions can be accessed in a similar manner:

 a_stack.push(1);     result = a_stack.pop(  ); 

Example 13-2 contains a class version of the stack.

Example 13-2. stack_c/stack_c.cpp
 /********************************************************  * Stack                                                *  *      A file implementing a simple stack class        *  ********************************************************/ #include <cstdlib> #include <iostream> #include <assert.h> const int STACK_SIZE = 100;     // Maximum size of a stack /********************************************************  * Stack class                                          *  *                                                      *  * Member functions                                     *  *      init -- initialize the stack.                   *  *      push -- put an item on the stack.               *  *      pop -- remove an item from the stack.           *  ********************************************************/ // The stack itself class stack {     private:         int count;              // Number of items in the stack         int data[STACK_SIZE];   // The items themselves     public:         // Initialize the stack         void init(  );         // Push an item on the stack         void push(const int item);         // Pop an item from the stack         int pop(  ); }; /********************************************************  * stack::init -- initialize the stack.                 *  ********************************************************/ inline void stack::init(  ) {     count = 0;  // Zero the stack } /********************************************************  * stack::push -- push an item on the stack.            *  *                                                      *  * Warning: We do not check for overflow.               *  *                                                      *  * Parameters                                           *  *      item -- item to put in the stack                *  ********************************************************/ inline void stack::push(const int item) {     assert((count >= 0) &&            (count < sizeof(data)/sizeof(data[0])));     data[count] = item;     ++count; } /********************************************************  * stack::pop -- get an item off the stack.             *  *                                                      *  * Warning: We do not check for stack underflow.        *  *                                                      *  * Returns                                              *  *      The top item from the stack.                    *  ********************************************************/ inline int stack::pop(  ) {     // Stack goes down by one     --count;     assert((count >= 0) &&            (count < sizeof(data)/sizeof(data[0])));     // Then we return the top value     return (data[count]); } // A short routine to test the stack int main(  ) {     stack a_stack;      // Stack we want to use     a_stack.init(  );     // Push three value on the stack     a_stack.push(1);     a_stack.push(2);     a_stack.push(3);     // Pop the item from the stack     std::cout << "Expect a 3 ->" << a_stack.pop(  ) << '\n';     std::cout << "Expect a 2 ->" << a_stack.pop(  ) << '\n';     std::cout << "Expect a 1 ->" << a_stack.pop(  ) << '\n';     return (0); } 
I l @ ve RuBoard


Practical C++ Programming
Practical C Programming, 3rd Edition
ISBN: 1565923065
EAN: 2147483647
Year: 2003
Pages: 364

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net