Author: Dann Corbit
Date: 11:13:07 01/05/06
Go up one level in this thread
On January 05, 2006 at 13:04:29, Mathieu Pagé wrote: >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é There may be some tiny benefit to: unsigned int GetColumn() { return m_uiSquareIndex & 7; // Assumes 2's complement. } unsigned int GetRow() { return m_uiSquareIndex >> 3; // Assumes m_uiSquareIndex is >= 0 } But the compiler may actually do those simple optimizations for you anyway. I don't see any important overhead in your class. Things like virtual functions and RTTI, structured exception handling, etc. add a little bit. By far, the algorithms chosen are more important than some little details about using C++ features.
This page took 0 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.