static
variables exist for the lifetime of the program static
is useful for functions like this:
void func (int i) {
int var = i;
}
when a function is finish executing its code its objects destroys automatically
to prevent this you can use static
void func (int i) {
static int var = i;
}
this mean that when a function finish executing its code the object defined as static will remain until the program ends
const
applies for variables, and prevents them from being modified in your code.
and constexpr
are used for constant expressions this two is read-only it means that once you initialize a value it cannot be modified
the difference of this two is:
static constexpr int d = 4; // line 4
constexpr int e = a + b + c*d;
in static constexpr int d = 4
is we define a variable named d that is a static constant expression integer and have a value of 4 and cannot be modified and remain until the program ends
and in constexpr int e = a + b + c*d;
is we define a variable name e that is
constant expression integer that have a value depends on what the result in those operations and cannot be modified