Los tipos de datos en C++ incluyen enteros (short, int, long), números en coma flotante (float, double, long double), caracteres, booleanos y vacío. Los tipos derivados se forman a partir de los tipos primitivos y pueden incluir clases y objetos. Cada tipo de dato primitivo ocupa un número específico de bits dependiendo de la arquitectura, y los tipos se pueden modificar con signed, unsigned, short y long para variar el rango y tamaño.