Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ dynamic_cast

作者:萫蕉姺森う   发布日期:2025-07-07   浏览:74

#include <iostream>
#include <typeinfo>

class Base {
public:
    virtual ~Base() {}
};

class Derived : public Base {
public:
    void derivedFunction() {
        std::cout << "Derived function called" << std::endl;
    }
};

int main() {
    Base* basePtr = new Derived();

    // 使用 dynamic_cast 进行安全的向下转型
    Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);

    if (derivedPtr) {
        derivedPtr->derivedFunction();  // 如果转型成功,调用派生类的方法
    } else {
        std::cout << "dynamic_cast failed" << std::endl;  // 如果转型失败
    }

    delete basePtr;
    return 0;
}

解释说明:

  • dynamic_cast 是 C++ 中用于安全地进行类型转换的关键字,主要用于多态类型的指针或引用之间的转换。
  • 在上面的代码中,Base 类是一个基类,并且它有一个虚析构函数(确保派生类的对象在通过基类指针删除时正确析构)。
  • Derived 类是从 Base 类继承而来的派生类,包含一个特有的成员函数 derivedFunction
  • main 函数中,我们创建了一个 Derived 对象,并通过基类指针 basePtr 指向它。
  • 使用 dynamic_castbasePtr 转换为 Derived* 类型的指针 derivedPtr。如果转换成功,则可以调用 Derived 类中的特有方法;如果转换失败(例如 basePtr 实际指向的是 Base 对象),则 derivedPtr 会是 nullptr,从而避免了非法访问。

这样可以确保类型转换的安全性,避免潜在的运行时错误。

上一篇:c++sort函数头文件

下一篇:c++多线程实现的四种方式

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ tcp

c++ gcd函数

c++ cli

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站