溫馨提示×

static_cast在類轉(zhuǎn)換中的應用

小樊
83
2024-06-18 20:49:57
欄目: 編程語言

在類轉(zhuǎn)換中,static_cast可以用于以下情況:

  1. 將基類指針或引用轉(zhuǎn)換為派生類指針或引用。這種轉(zhuǎn)換只能在編譯器已知源類型和目標類型之間存在繼承關(guān)系時才能進行。
class Base {
public:
    virtual void func() {
        cout << "Base function" << endl;
    }
};

class Derived : public Base {
public:
    void func() override {
        cout << "Derived function" << endl;
    }
};

int main() {
    Base* basePtr = new Derived();
    Derived* derivedPtr = static_cast<Derived*>(basePtr);
    derivedPtr->func();  // 輸出 "Derived function"
    delete basePtr;
    return 0;
}
  1. 將整數(shù)類型轉(zhuǎn)換為枚舉類型。
enum class Color {
    Red,
    Blue,
    Green
};

int main() {
    int colorValue = 1;
    Color color = static_cast<Color>(colorValue);
    return 0;
}
  1. 將指針類型轉(zhuǎn)換為void指針類型。
class MyClass {
public:
    void func() {
        cout << "Hello, World!" << endl;
    }
};

int main() {
    MyClass* myClassPtr = new MyClass();
    void* voidPtr = static_cast<void*>(myClassPtr);
    MyClass* newMyClassPtr = static_cast<MyClass*>(voidPtr);
    newMyClassPtr->func();  // 輸出 "Hello, World!"
    delete myClassPtr;
    return 0;
}

0