在最后,检查转换是否成功,如果成功输出dynamic_pointer_cast Succeeded,如果失败则输出dynamic_pointer_cast Failed。 总体而言,dynamic_pointer_cast在C++11智能指针中起到至关重要的作用,可以帮助我们避免许多类型转换带来的错误,提高代码的健壮性和可靠性。因此,在编程中,我们需要正确地使用它,尤其是在涉及到智能指针的...
一、指针类型的dynamic_cast 如果一条dynamic_cast语句的转换目标是指针类型并且转换失败了,会返回一个空指针,则判断条件为0,即为false;如果转换成功,指针为非空,则判断条件为非零,即true。 二、引用类型的dynamic_cast 引用类型的dynamic_cast和指针类型的dynamic_cast在表示错误发生的方式上略有不同。因为不存在空...
如果转换失败,返回的智能指针将为一个空指针。 if (void_ptr == nullptr) { std::cout << "Failed to cast" << std::endl; } else { std::cout << "Succeed to cast" << std::endl; } 第六步:删除原始指针 由于智能指针被销毁时会自动删除它们管理的对象,因此我们不用特别地删除原始指针。但是...
一、指针类型的dynamic_cast 如果一条dynamic_cast语句的转换目标是指针类型并且转换失败了,会返回一个空指针,则判断条件为0,即为false;如果转换成功,指针为非空,则判断条件为非零,即true。 二、引用类型的dynamic_cast 引用类型的dynamic_cast和指针类型的dynamic_cast在表示错误发生的方式上略有不同。因为不存在空...
如果⼀条dynamic_cast语句的转换⽬标是指针类型并且转换失败了,会返回⼀个空指针,则判断条件为0,即为false;如果转换成功,指针为⾮空,则判断条件为⾮零,即true。⼆、引⽤类型的dynamic_cast 引⽤类型的dynamic_cast和指针类型的dynamic_cast在表⽰错误发⽣的⽅式上略有不同。因为不存在空引...
引用类型的dynamic_cast和指针类型的dynamic_cast在表示错误发生的方式上略有不同。因为不存在空引用,所以对于引用类型来说无法使用与指针类型完全相同的错误报告策略。当对引用类型转换失败时,程序抛出一个名为std::bad_cast的异常,该异常定义在typeinfo标准库头文件中。