In most object-oriented programming languages, a class is a user-defined type that includes a set of functions. As we have seen, structures in C++ meet the general definition of a class.
But there is another feature in C++ that also meets this definition; confusingly, it is called a class. In C++, a class is just a structure whose instance variables are private by default. For example, I could have written the Card definition:
class Card
{
private:
int suit, rank;
public:
Card();
Card(int s, int r);
int getRank() const { return rank; }
int getSuit() const { return suit; }
int setRank(int r) { rank = r; }
int setSuit(int s) { suit = s; }
};
I replaced the word struct with the word class - the result of the two definitions is exactly the same. If I wanted to, I could remove the private: label. In a class, any non-labeled members default to private. Members default to public in a struct, which is why we didnβt have to say public: in any of our structs.
In fact, anything that can be written as a struct can also be written as a class, just by adding or removing labels. There is no real reason to choose one over the other, except that as a stylistic choice, most C++ programmers use class.