static_cast是一種用于類型轉換的C++運算符。它可以將一個類型的值轉換為另一個類型,但只適用于具有轉換關系的類型。以下是static_cast的常見用法:
int num = 10;
double numDouble = static_cast<double>(num);
double numDouble = 10.5;
int numInt = static_cast<int>(numDouble);
int num = 10;
int* numPtr = #
void* voidPtr = static_cast<void*>(numPtr);
int num = 10;
int* numPtr = #
double* doublePtr = static_cast<double*>(numPtr);
class Base {
public:
virtual void func() {}
};
class Derived : public Base {
public:
void func() override {}
};
Base* basePtr = new Derived();
Derived* derivedPtr = static_cast<Derived*>(basePtr);
需要注意的是,使用static_cast進行類型轉換時,編譯器不會進行運行時類型檢查,因此在使用時需要確保轉換是安全的。如果轉換不安全,則可能會導致未定義的行為。如果不確定轉換是否安全,可以使用dynamic_cast進行類型轉換,它會在運行時檢查類型。