Static_cast omgjør verdien fra en type, for eksempel double, til en verdi av en annen type, for eksempel int.
int myInt = static_cast<int>(6.7); // myInt = 6
I eksempelet under, runder vi av pi til én desimal ved å omforme fra double til int. Her bruker vi at int ikke kan ha desimaler.
// Runder av pi til én desimal
double pi { 3.14159 }; // pi = 3.14159
int temp = static_cast<int>( pi * 10 ); // temp = 31
pi = static_cast<double>( temp / 10.0 ); // pi = 3.1
// Dette kan også gjøres mer kompakt
double pi {3.14159};
pi = static_cast<double>(static_cast<int>( pi * 10 ) / 10. );
Et annet eksempel på hvor det kan være nyttig med static_cast er hvis man bruker en enum class. I eksempelet under finner vi at mai er den 5. måneden.
// Headerfil (month.hpp)
#pragma once
enum class month {
January = 1, February, March, April, May, June, July, August, September, October, November, December
};
// Hovedfil (main.cpp)
#include <iostream>
#include "month.hpp"
int main()
{
std::cout << "May is the " << static_cast<int>(month::May) << "th month." << std::endl;
}