1. static_cast:明确隐式转换
低风险转换:int ⇒ float,char ⇒ int,void* ⇒ int *
2. reinterpret_cast:明确强制转换
3. dynamic_cast:用于具有虚函数的基类与派生类之间的 指针或引用转换
- 基类必须具备虚函数:
dynamic_cast
是运行时类型检测,需要运行时类型信息(RTTI),该信息存储在虚函数表 ⇒ 被必要不使用,会有额外的函数开销; - 常用转换方式:1. 基类 ⇒ 派生类,必须使用
dynamci_cast
;
2. 派生⇒ 基类:可以使用dynamic_cast
,但推荐使用static_cast
;
#include<bits/stdc++.h>
using namespace std;
class CFather{
public:
CFather();
virtual