There are three main data types in C++: primitive, derived, and user-defined. Primitive types include basic types like int and float. Derived types include arrays, which can contain collections of other data types. User-defined types encompass structures and enums, which are custom data types created by the programmer. Common primitive data types vary in size and range depending on the type.