[C++] 强制类型转换(dynamic_cast和dynamic_Pointer_cast)

简介: [C++] 强制类型转换(dynamic_cast和dynamic_Pointer_cast)

1、指引或者引用的向上转换,向下转换

例如基类Father ,Son继承Father,派生类Son.。Father—>Son则为向下转换,Son—>Father则为向上转换。向上转换为隐士转换,向下转换需要dynamic_cast或者c的转换方式。

向上转换:

struct Father
{
  //基类Father
};
struct Son:Father
{
  //基类Father的派生类B
};
//1.普通指针转换
Son *son = new Son;
//派生类Son向上转换为基类Father
Father *father = son;
//2.智能指针转换
std::shared_ptr<Father> father(new Son(son));

此时son就是向上转换。无需显式转换既可以编译通过。

2、dynamic_cast

一般用于有继承关系的类之间的向下转换。

3、dynamic_pointer_cast

当指针是智能指针时候,向下转换,用dynamic_Cast 则编译不能通过,此时需要使用dynamic_pointer_cast。

向下转换(含智能指针):

struct Father
{
  //基类Father
};
struct Son:Father
{
  //基类Father的派生类B
};
std::shared_ptr<Father> father;
std::shared_ptr<Son> son = std::dynamic_pointer_cast<Son>(father);

戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。
目录
相关文章
|
存储 安全 Cloud Native
C++ 强制类型转换使用场景
C++ 强制类型转换使用场景
|
8月前
|
安全 编译器 程序员
【C++入门到精通】C++类型的转换 | static_cast | reinterpret_cast | const_cast | dynamic_cast [ C++入门 ]
【C++入门到精通】C++类型的转换 | static_cast | reinterpret_cast | const_cast | dynamic_cast [ C++入门 ]
71 0
|
8月前
|
存储 安全 编译器
【C++ 多态 】深入理解C++的运行时类型信息(RTTI):dynamic_cast和typeid的应用与原理
【C++ 多态 】深入理解C++的运行时类型信息(RTTI):dynamic_cast和typeid的应用与原理
525 1
|
8月前
|
人工智能 安全 机器人
【C++】dynamic_cast基本用法(详细讲解)
【C++】dynamic_cast基本用法(详细讲解)
|
8月前
|
安全 编译器 C语言
【C++ 类型转换关键字 *_cast 】理解const_cast、reinterpret_cast、dynamic_cast和static_cast的用法
【C++ 类型转换关键字 *_cast 】理解const_cast、reinterpret_cast、dynamic_cast和static_cast的用法
95 0
|
8月前
|
编译器 C++
我刚才用了dynamic_cast 你给我普及一下C++ 中这几种类型转换吧
我刚才用了dynamic_cast 你给我普及一下C++ 中这几种类型转换吧
62 0
|
8月前
|
安全 编译器 程序员
[C++ 从入门到精通] 6.static_cast、dynamic_cast等显示类型转换
[C++ 从入门到精通] 6.static_cast、dynamic_cast等显示类型转换
109 0
|
安全 C++
C++11之强制类型转换(static_cast,const_cast,dynamic_cast,reinterpret_cast)
C++11之强制类型转换(static_cast,const_cast,dynamic_cast,reinterpret_cast)
125 0
|
2月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
57 2