|
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? 详细讨论何时使用每个铸造操作员。 |
|
|
DutChen18 · 如何在C宏中内联触发隐式指针转换? 2 年前 |
|
|
0xDED · 如何将泛型类强制转换为对象的泛型类? 2 年前 |
|
|
Niclas · 变量>-1如何在C中精确求值? 2 年前 |
|
|
Textime · 将Varchar2转换为时间 2 年前 |
|
|
xpt · Go,无法将类型*int32转换为类型*int64 2 年前 |