C++ Types Tutorial – Complete Guide

Welcome to our tutorial on C++ types. This powerful object-oriented programming language uses a collection of different types to shape the way we structure and use our data. Whether you’re a budding programmer just starting your coding journey or an experienced developer looking to refine your C++ skills, this tutorial is for you.

What are C++ Types?

In C++, types are the building blocks of data. They determine the nature of data we can store and manipulate in our programs. From simple types like integer and float, to complex types like arrays and classes, understanding C++ types is crucial in both game development and more general applications of the language.

Why Should I Learn About C++ Types?

By learning about C++ types, you can write more efficient, bug-free code. They’re a fundamental concept in the language, and thus form the backbone of most C++ programs. Knowing them well can open up powerful possibilities for data manipulation, especially in creating dynamic and interactive gaming experiences.

CTA Small Image

Basic C++ Types

Let’s start by exploring the most basic data types in C++. These include integers, doubles, characters and booleans.

Here’s an example code of how you could declare these types:

int myInt = 10;
double myDouble = 3.14;
char myChar = 'A';
bool myBool = true;

Each line declares a variable of a certain type, and initializes it with a value.

String Type in C++

Strings are a bit more advanced than the basic types, but they are also frequently used. A string is simply a sequence of characters, and is often used to store text.

Here’s how you can declare a string in C++:

std::string myString = "Hello, World!";

The first line tells the compiler to use the string library. The second line declares a string variable and initializes it with a string of text.

Array Type in C++

An array in C++ is a way to store multiple values of the same type under the same identifier. Arrays are incredibly useful when you want to store an ordered list of items.

Here’s an example of how to declare an array in C++:

int myArray[5] = {1, 2, 3, 4, 5};

It declares an integer array with five elements and initializes them with the numbers 1 through 5.

Struct and Class Types in C++

Data can also be encapsulated using structs and classes in C++. These are user-defined types that can hold multiple related data.

Here’s an example of a struct in C++:

struct Book {
    std::string title;
    std::string author;
    int year;

Book myBook = {"The Great Gatsby", "F. Scott Fitzgerald", 1925};

This code declares a struct named Book that can store a title, an author, and a year. Then, it initializes a Book variable with some data.

Classes in C++ are similar to structs, but they also include features like methods (functions associated with the class) and access control (public, private, and protected members). Here is how we could adapt the Book struct into a class:

class Book {
    std::string title;
    std::string author;
    int year;
    Book(std::string t, std::string a, int y) {
        title = t;
        author = a;
        year = y;

Book myBook = Book("The Great Gatsby", "F. Scott Fitzgerald", 1925);

Aside from the data members, the Book class also includes a constructor: a special type of method that is called when a new instance of the class is created. The constructor helps us initialize the class members.

Pointer and Reference Types in C++

Pointers and references are special types in C++. A pointer is a variable that stores the memory address of another variable, while a reference is a name given to an existing variable.

Here’s an example of a pointer in C++:

int myVar = 10;
int *myPtr = &myVar;

This code creates an integer pointer myPtr and initializes it to point to myVar.

And here’s how to declare a reference:

int myVar = 10;
int &myRef = myVar;

In this code, myRef is a reference to myVar. Any changes to myRef will also change myVar.

User-Defined Types

Aside from the native data types in C++, the language also supports user-defined types via Enumerations (enum), Wheres (where), and Type Aliases (typedef / using). These types extend the capabilities of basic and compound types.


Enumerations allow you to define a type that can have one of a few specific values. Here’s an example:

enum Direction {NORTH, EAST, SOUTH, WEST};

Direction windDirection = SOUTH;

Here we declare an enum named Direction and then create a variable named windDirection of type Direction.

Type Aliases

Type Aliases allow you to create a new name for an existing type. You can create an alias with either the typedef keyword or the using keyword:

typedef std::string Name;

Name myName = "Alice";

This code creates a type alias Name for std::string, and then uses it to declare a variable.

We could achieve the same end result using the using keyword:

using Name = std::string;

Name myName = "Bob";

Again, we create a type alias Name for std::string, and then use it to declare a variable.

The auto Keyword

Finally, in modern C++, you can often use the auto keyword to let the compiler determine the type of a variable for you.

auto myInt = 10; // The compiler will determine that myInt is an int
auto myDouble = 3.14; // The compiler will determine that myDouble is a double

Using auto can often make your code more readable and less prone to errors, particularly when working with complex types or templates.

Continue Your Journey with C++

Now that we’ve introduced you to the concept of C++ types, you may be asking yourself, “Where do I go from here?” The answer is simple: continue practicing and exploring with C++. To help you with that, we’d like to invite you to check out our C++ Programming Academy.

Our academy offers comprehensive courses that cover C++ programming from the ground up, progressing from the basics to building your own simple games. It’s an awesome opportunity for both beginners and experienced programmers. By completing the courses, not only will you reinforce your understanding of C++ types, but you’ll also build up a portfolio of real C++ projects.

For those of you wanting to explore even more, have a look at our broader collection of C++ Courses. No matter where you are in your learning journey, at Zenva we aim to provide relevant and high-quality content to further your programming career.


Mastering the types in C++ is a crucial step towards becoming a proficient programmer in this powerful language. By learning and practicing how to use these types, you’ll be well equipped to create efficient, dynamic, and interactive applications or games. Remember, the journey of a thousand miles begins with a single step, and you’ve just taken that step with this tutorial.

Ready to take the next step on your coding journey? Dive deeper into C++ with our comprehensive C++ Programming Courses. At Zenva, we’re here to guide you every step of the way as you conquer the world of programming. Let’s code on, shall we?

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.