Simplifying member functions in Blackjack game
If you want to make things more consice, you could change a few things:


Number of card printed on 2 digits:

if (totalCardsValue &lt;= 9)
    ss &lt;&lt; "(0" &lt;&lt; totalCardsValue &lt;&lt; ")  ";
else
    ss &lt;&lt; "(" &lt;&lt; totalCardsValue &lt;&lt; ")  ";


could be written

ss &lt;&lt; ((totalCardsValue &lt;= 9) ? "(0" : "(") &lt;&lt; totalCardsValue &lt;&lt; ")  ";


or 

ss &lt;&lt; "(" &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; totalCardsValue &lt;&lt; ")  ";

No need for temporary std::stringstream.
I think you could just std::cout directly without using std::stringstream ss.
Removing duplicated code: void Hand::displayPlayerHand() does the same as void Hand::displayCPUHand(true). This would probably better if you were naming this method display and calling the parameter displayAllCards or displayOnlyFirst. Also, you might want to give it a default value. 

Corresponding code for Hand.cpp is:

void Hand::display(bool displayAllCards) const 
{
    // displays the first card
    std::cout &lt;&lt; cards[0] &lt;&lt; " ";

    // displays the rest of the cards if required
    if (displayAllCards)
    {
        for (unsigned i = 1; i &lt; cards.size(); i++)
            std::cout &lt;&lt; cards[i] &lt;&lt; " ";
    }
}

Removing duplicated code: things can be changed in Player.cpp too as Player::displayCPUStats and  Player::displayPlayerStats really look alike.

Edited to finish my answer: Indeed, displayPlayerStats() is nothing but displayCPUStats(true). Here again, it might be worth changing the names of methods and variables.

Corresponding code for Player.cpp is:

void Player::displayStats(bool displayAllCards) const
{
    std::cout &lt;&lt; "\n* " &lt;&lt; name &lt;&lt; ": ";
    std::cout &lt;&lt; "($" &lt;&lt; chips &lt;&lt; ") ";

    if (displayAllCards)
    {
        std::cout &lt;&lt; ((totalCardsValue &lt;= 9) ? "(0" : "(") &lt;&lt; totalCardsValue &lt;&lt; ")  ";
    }
    playerHand[0].displayHand(displayAllCards);
}