![]() |
1
2
C++是面向性能的。所以只要有一些用例,你可以获得性能,C++将允许你这样做。考虑
类似地,如果您有一个类型为
另一方面,完全不相关类型的指针之间没有这种自然的转换(例如
实际上,reinterpret_cast也没有任何成本,它只是将指针解释为一种不同的类型-具有所有风险!和A
从内存布局来看,
很明显,在
|
![]() |
2
2
没有理由阻止上映。事实上,派生指针甚至可以隐式转换为基指针-不需要强制转换(除了在有多个相同类型基的卷积情况下)。派生类对象始终包含基类子对象。 upcasting特别有用,因为它允许通过使用虚拟函数进行运行时多态性。
基指针 可以 指向派生对象的基子对象,作为向上转换的结果。例如:
在某些情况下,您可能希望访问派生对象的成员 你 知道是被人指着的。静态强制转换使这成为可能,而无需花费运行时类型信息。 编译器通常不可能(在编译时)找出指向对象的具体类型(即指针是否指向子对象,如果指向子对象,容器对象的类型是什么)。程序员有责任确保满足cast的要求。如果程序员无法证明其正确性,那么编写静态转换就是一个错误。 |
![]() |
3
0
那是因为你要做的是重新解释
见: When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used? 详细讨论何时使用每个铸造操作员。 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 6 年前 |
![]() |
tobeypeters · 反射铸造 6 年前 |
![]() |
Alex · 是否改为存储字符串的整数的通用ArrayList? 6 年前 |
![]() |
Kai · 如何在C#中转换会话中存储的词典? 6 年前 |
![]() |
Ján ЯabÄan · 布尔值到双精度的快速转换方法 6 年前 |