Consider the following class:
class Stats
{
    private:
    int arraySize; // size of array
    int * data; // pointer to data, an array of integers
    // default size of array in default constructor
    static const int DEFAULT_SIZE = 10;
    public:
    Stats() // default constructor
    {
        arraySize = DEFAULT_SIZE; // element count set to 10
        data = new int[DEFAULT_SIZE]; // array of integers
        srand((unsigned int) time(NULL)); // seeds rand() function
        // initializes integer array data with random values
        for (int i = 0; i < DEFAULT_SIZE; i++)
        {
            // data filled with value between 0 and 10
            data[i] = rand() % (DEFAULT_SIZE + 1);
        }
    }
    ~Stats() // destructor that deletes data memory allocation
    {
        delete [] data;
    }
    void displaySampleSet(int numbersPerLine)
    {
        cout << "Array contents:" << endl; // user legibility
        // iterates through array and prints values in array data
        for (int i = 0; i < arraySize; i++)
        {
            cout << data[i];
            /*  nested if statements that either prints a comma between
            values or skips to next line depending on value of numbersPerLine   */
            if (i + 1 < arraySize)
            {
                if ((i + 1) % numbersPerLine != 0)
                    cout << ", ";
                else
                    cout << endl;
            }
        }
    }
}
For some reason, when I create a Stats object in the following way:
Stats statObject = Stats();
and then call the displaySampleSet() on it, the numbers display fine. However, the function prints garbage when the Stats object is created in the following way:
Stats statObject;
statObject = Stats();
I have no idea why it does this and have a feeling it has to do with the integer pointer 'data' and/or with the way the object is being created but I'm not sure what... Any and all help is fully appreciated! Thank you so much in advance.
Update: Destructor added
 
     
     
    