Author: Dann Corbit
Date: 12:59:41 06/12/02
Go up one level in this thread
On June 12, 2002 at 15:43:04, Russell Reagan wrote:
>On June 12, 2002 at 15:29:52, Rémi Coulom wrote:
>
>>You do not have to write a constructor for a class either. Removing your empty
>>constructors is probably the best solution, if I guessed what you did correctly.
>
>What about if I had a 'class Move' and did the following:
>
>class MoveList {
> Move moves[512];
> int numMoves;
> public:
> // constructors and other methods here
>};
>
>Isn't Move's constuctor going to get run 512 times for this, even if I only end
>up making use of the first 5 Move's in the array? That seems to be wasteful,
>especially if the constructor does something.
If the constructor does nothing it is the same as an array of structs declared
auto. No time is wasted.
>Even if the constructor does
>nothing, it's getting called 512 times. Suppose I used a MoveList in my
>alpha-beta function to store the legal moves in. That means that I'm wasting a
>function call 512 times FOR EACH NODE I look at.
Why do you need more than one movelist?
>Since a typical search will go
>into the millions of nodes, that's 512 million function calls that are
>completely wasted, and that's assuming that the constructor does absolutely
>nothing.
There will be no function calls if the constructor does nothing. Look at the
assembly generated. With GCC use -S and with MS VC++ or Intel C++ use /Fa
>As for just deleting the default constructor, I believe that in this case where
>you have an array of Move, the compiler will give you an error saying that there
>is no default constructor for class Move.
Broken compiler.
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.