See http://stackoverflow.com/questions/161053/c-which-is-faster-stack-allocation-or-heap-allocation
Stack allocation is much faster since all it really does is move the stack pointer.
Since loop counters declared locally are allocated on the stack, this is your worst case scenario in terms of performance - a single pointer move (your best case will be just using a register, which your compiler may do automatically for you, or you may explicitly request with the "register" keyword).
For memory usage, and leaving aside the fact that you're getting dangerously into micro-optimization territory here, the stack will likewise be more efficient. If you declare a loop counter as a class member, then the memory used for that loop counter will always be used, even when no loops are running. Contrast with:
for (int i = 0; i < whatever; ++i)
{
}
In this case the memory is only used within the scope of the loop itself; allocation is (worst-case) just moving the stack pointer, freeing is also (worst case) just moving the stack pointer. Best case your compiler is just going to take a register for it and just not use that register for anything else within the loop, which means it's effectively totally free: no allocation, no memory usage, fast.