91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++強制類型轉換操作符dynamic_cast怎么用

c++
小億
77
2024-01-04 14:43:42
欄目: 編程語言

C++中的dynamic_cast是一種用于安全地將基類指針或引用轉換為派生類指針或引用的強制類型轉換操作符。它能夠在運行時檢查轉換是否有效,并返回正確的指針或引用。

dynamic_cast的語法如下:

dynamic_cast<new_type>(expression)

其中,new_type是要轉換的目標類型,expression是要轉換的指針或引用。

使用dynamic_cast時,需要滿足以下條件:

  1. 轉換類型必須是指針或引用類型,不能是基本類型。
  2. 轉換類型必須是類類型,不能是void指針。
  3. 源類型和目標類型之間必須存在繼承關系。

使用dynamic_cast時,會進行以下檢查:

  1. 如果轉換成功,返回轉換后的指針或引用。
  2. 如果轉換失敗且目標類型是指針類型,則返回空指針。
  3. 如果轉換失敗且目標類型是引用類型,則拋出std::bad_cast異常。

以下是一個使用dynamic_cast的示例:

#include <iostream>

class Base {
public:
    virtual void print() {
        std::cout << "Base" << std::endl;
    }
};

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

int main() {
    Base* basePtr = new Derived;
    
    Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
    if (derivedPtr) {
        derivedPtr->print(); // 輸出 "Derived"
    } else {
        std::cout << "Failed to cast" << std::endl;
    }
    
    delete basePtr;
    return 0;
}

在上面的示例中,Base類是一個基類,Derived類是一個派生類,它繼承了Base類。首先創建了一個Derived類的對象,并將其賦值給一個Base類的指針basePtr。然后使用dynamic_cast將basePtr轉換為Derived類的指針derivedPtr。由于Derived類是Base類的派生類,轉換是有效的,所以derivedPtr將指向Derived類的對象。最后調用derivedPtr的print()函數,輸出 “Derived”。

需要注意的是,dynamic_cast只能用于多態類型(即帶有虛函數的類),因為它需要在運行時進行類型檢查。如果不是多態類型,使用dynamic_cast會導致編譯錯誤。

0
绥中县| 高台县| 济南市| 珲春市| 泗洪县| 西和县| 宜春市| 蕉岭县| 徐水县| 莆田市| 万州区| 泸州市| 平陆县| 金坛市| 项城市| 新兴县| 孝感市| 文昌市| 宁陵县| 五华县| 德清县| 新闻| 区。| 昭觉县| 定远县| 锡林郭勒盟| 牡丹江市| 石林| 山丹县| 余江县| 施秉县| 乌兰浩特市| 新竹县| 樟树市| 德保县| 宽城| 宜兴市| 永顺县| 柯坪县| 通河县| 巴东县|