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

溫馨提示×

C++的dynamic_cast怎么使用

c++
小億
90
2023-12-18 09:09:47
欄目: 編程語言

dynamic_cast是C++中的一種類型轉換操作符,用于將基類指針或引用轉換為派生類指針或引用。其使用方式如下:

  1. dynamic_cast運算符的語法如下:
dynamic_cast<type*>(expression)

其中,type為欲轉換的目標類型,expression為欲轉換的指針或引用。

  1. dynamic_cast的使用規則如下:
  • 當轉換失敗時,返回空指針(對于指針轉換)或拋出std::bad_cast異常(對于引用轉換)。
  • 轉換成功時,返回指向目標類型的指針(對于指針轉換)或引用(對于引用轉換)。
  1. dynamic_cast的使用示例:
#include <iostream>

class Base {
public:
    virtual void showMessage() {
        std::cout << "This is the Base class." << std::endl;
    }
};

class Derived : public Base {
public:
    void showMessage() {
        std::cout << "This is the Derived class." << std::endl;
    }
};

int main() {
    Base* basePtr = new Derived();
    
    // 使用dynamic_cast將基類指針轉換為派生類指針
    Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
    if (derivedPtr != nullptr) {
        derivedPtr->showMessage();  // 輸出: This is the Derived class.
    }
    
    delete basePtr;
    return 0;
}

在上述示例中,Base類是一個基類,Derived類是其派生類。首先,我們創建了一個指向Derived類對象的Base類指針basePtr。然后,使用dynamic_cast將basePtr轉換為Derived類指針derivedPtr。由于basePtr指向的是Derived類對象,所以轉換成功,derivedPtr不為nullptr,可以調用Derived類的成員函數showMessage輸出相應的信息。

需要注意的是,dynamic_cast只能用于具有多態性的類(即含有虛函數的類),否則會導致編譯錯誤。此外,dynamic_cast只能用于指針或引用的轉換,不能用于基本類型的轉換。

0
雷州市| 榆林市| 建阳市| 辉县市| 汉源县| 尚义县| 苍南县| 达州市| 乐陵市| 宁都县| 贡嘎县| 洛南县| 饶平县| 谷城县| 泰州市| 睢宁县| 巴彦淖尔市| 大理市| 宣汉县| 休宁县| 雷山县| 江源县| 石门县| 太白县| 宜君县| 北宁市| 恩施市| 祥云县| 昭觉县| 日喀则市| 景泰县| 方正县| 宁明县| 青龙| 柳河县| 天峨县| 广丰县| 改则县| 汉源县| 武平县| 永和县|