static_cast
Megjelenés
Főnév
static cast (tsz. static casts)
- (informatika) A
static_castC++-ban egy típuskasztoló operátor, amelyet statikus típuskonverzióhoz használunk. Ez egy biztonságosabb és kifejezőbb módja a típusátalakításnak, mint a C-stílusú kasztolás ((T) x).
Mire jó a static_cast?
- Egymással kompatibilis típusok közötti konverzióra (pl.
int→double).
- Alap- és származtatott osztályok közötti kasztolásra, ha a konverzió biztonságos.
void*mutatók visszaalakítására konkrét típusú mutatóvá.
enumés számértékek közötti konverzióra.
Példák static_cast használatára
1. Alapvető típusok közötti átalakítás
#include <iostream>
int main() {
double d = 3.14;
int i = static_cast<int>(d); // Lebegőpontos → egész szám átalakítás
std::cout << "i: " << i << std::endl; // 3
return 0;
}
2. Alap- és származtatott osztályok közötti átalakítás
#include <iostream>
class Base {};
class Derived : public Base {};
int main() {
Derived d;
Base* basePtr = static_cast<Base*>(&d); // Származtatott osztály mutatójának átalakítása alaposztály mutatójává
return 0;
}
Ez biztonságos, mivel minden Derived objektum egy Base típusú objektum is.
3. void* visszaalakítása
#include <iostream>
int main() {
int x = 42;
void* ptr = &x; // void* típusú mutató
int* intPtr = static_cast<int*>(ptr); // Visszaalakítás int mutatóvá
std::cout << *intPtr << std::endl; // 42
return 0;
}
4. Enum és számértékek közötti átalakítás
#include <iostream>
enum Color { RED, GREEN, BLUE };
int main() {
Color c = RED;
int colorValue = static_cast<int>(c); // Enum érték konvertálása int-é
std::cout << "Color value: " << colorValue << std::endl; // 0
return 0;
}
Mire nem jó a static_cast?
- Nem ellenőrzi a futásidejű típushelyességet (pl.
dynamic_casterre való). - Nem konvertál különböző osztályhierarchiák között biztonságosan.
- Nem használható
const_cast-ként aconstvagyvolatilemódosítók eltávolítására.
Összegzés:
A static_cast egy hatékony és biztonságosabb módja a típusátalakításnak, amikor a konverzió egyértelmű és nem igényel futásidejű ellenőrzést.
- static cast - Szótár.net (en-hu)
- static cast - Sztaki (en-hu)
- static cast - Merriam–Webster
- static cast - Cambridge
- static cast - WordNet
- static cast - Яндекс (en-ru)
- static cast - Google (en-hu)
- static cast - Wikidata
- static cast - Wikipédia (angol)