What you have declared is an array of 8 octree*
values. You cannot delete the array itself.
You should instead do this:
for( int i = 0; i < 8; i++ )
if( child[i] ) delete child[i];
If you want to delete them all in one hit, you could define it like this:
octree * child;
//...
child = new octree [8];
//...
delete [] child;
The reason being that in an octree you either have no children or 8 children.
And yes: when you delete an octree
instance, its destructor will be called.