Computer Chess Club Archives


Search

Terms

Messages

Subject: Is there an overhead in this OO design ?

Author: Mathieu Pagé

Date: 10:04:29 01/05/06


Hi, I want to push OO to it's limit in order to get cleaner code. Here is what I
want to do :


class CSquare
   {
   private:
      unsigned int m_uiSquareIndex;
   public :
      // the next 3 functions allow CSquare to be used as an unsigned int in
      // arithmetic operations.
      inline CSquare(unsigned int);
      inline CSquare operator=(unsigned int);
      inline operator unsigned int();

      // The next 2 functions are why i'd like to use OOP to make the
manipulation
      // of squares clearer.
      unsigned int GetColumn()
      {
         return m_uiSquareIndex % 8;
      };

      unsigned int GetRow()
      {
         return m_uiSquareIndex / 8;
      };
   };


This way I can use CSquare like this :


CSquare csq(A1)
csq += 8; // One row higher. csq is now equat to A2.
csq.GetRow(); // Will return 1 (0 based index)
csq.GetColumn(); // will return 0



I think that with basic compiler optimisations like inlining this code will
bring no overhead in my engine. I already asked some friends about it and they
seem to think like me, but are not sure.

Since it's CC related and there is some good programmers monitoring this board I
though I would ask here.

What is your opinion about this?

Mathieu Pagé



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.