The problem is you never free the old memory.
for(unsigned int i = 0; i < size_; i++)
temp[i] = array_[i];
array_ = temp;
should be:
for(unsigned int i = 0; i < size_; i++){
temp[i] = array_[i];
}
delete[] array_;
array_ = temp;
You could also likely use memcopy
instead of the for-loop.