So I have this code I wrote. I understand it is very basic and probably should never ever be done like this. I was just trying to get it to work. The problem is when my push_back function is called all the variables are suddenly jumbled and it fails to work. Such as the vectorsize becomes 1, and the cap becomes some random large number. I was wondering what was happening and how to fix it.
This is the code for the vector class
#include "MyVector.h"
void MyVector::grow()
{
    if (cap == 0)
        cap = MINCAP;
    else
        cap = cap*MINCAP;
    int* temp = new int[cap];
    for (int i = 0; i < vectorSize; i++)
    {
        temp [i] = theVector[i];
    }
    delete[] theVector;
    theVector = temp;
}
MyVector::MyVector()
{
    clear();
}
MyVector::~MyVector()
{
}
MyVector::MyVector(int _cap)
{
    cap = _cap;
}
int MyVector::size()
{
    return vectorSize;
}
int MyVector::capacity()
{
    return cap;
}
void MyVector::clear()
{
    vectorSize = 0;
    cap = MINCAP;
    delete(theVector);
    theVector = new int[MINCAP];
}
void MyVector::push_back(int n)
{
    if (vectorSize+1 >= cap) 
    {
        grow();
        theVector[vectorSize] = n;
    }
    else 
    {
        theVector[vectorSize] = n;
    }
}
int MyVector::at(int _location)
{
    return theVector[_location];
}
This is the code for the driver program to test it.
// Project #12 Implementation file for the driver
// CS 1400  (your section)
// Your name
// the date
// ------------------------
#include "driver.h"
int main()
{
    // Create a default vector 
    MyVector sam;
    // push some data into sam
    cout << "\nPushing three values into sam";
    //It seems to be happening right here when the function is called
    sam.push_back(TEST_VALUE1);
    sam.push_back(TEST_VALUE2);
    sam.push_back(TEST_VALUE3);
    cout << "\nThe values in sam are: ";
    // test for out of bounds condition here
    // and test exception 
    for (int i = 0; i < sam.size() + 1; i++)
    {
        try
        {
            cout << sam.at(i) << " ";
        }
        catch (int badIndex)
        {
            cout << "\nOut of bounds at index " << badIndex << endl;
        }
    }
    cout << "\n--------------\n";
    // clear sam and display its size and capacity
    sam.clear();
    cout << "\nsam has been cleared.";
    cout << "\nSam's size is now " << sam.size();
    cout << "\nSam's capacity is now " << sam.capacity() << endl;
    cout << "---------------\n";
    // Push 12 values into the vector - it should grow
    cout << "\nPush 12 values into sam.";
    for (int i = 0; i < MAX; i++)
        sam.push_back(i);
    cout << "\nSam's size is now " << sam.size();
    cout << "\nSam's capcacity is now " << sam.capacity() << endl;
    cout << "---------------\n";
    cout << "\nTest to see if contents are correct...";
    // display the values in the vector
    for (int i = 0; i < sam.size(); i++)
    {
        cout << sam.at(i) << " ";
    }
    cout << "\n--------------\n";
    cout << "\n\nTest Complete...";
    cout << endl;
    system("PAUSE");
    return 0;
}
 
    