C++ 类型转换与标准库入门
1. C++ 新式类型转换
在 C++ 中,除了可以使用 ANSI C 风格的类型转换,还提供了几种 C 语言不支持的类型转换运算符,具体如下表所示:
| 运算符 | 描述 |
| — | — |
| dynamic_cast | 仅当作为操作数的对象是预期类型时,才返回有效的对象指针。 |
| static_cast | 可用于显式执行任何隐式类型转换,类似于 ANSI C 类型转换。 |
| const_cast | 可用于移除类的任何 const、volatile 或未对齐属性。 |
| reinterpret_cast | 允许将任何指针类型转换为其他任何指针类型;也允许将任何整数类型转换为指针类型,反之亦然。 |
以下是一个简单的动态内存分配和类型转换的示例代码:
void* pVoid = new char[255];
char* pCast = (char*)pVoid; // cast void* to char*
delete [] pCast;
2. 类层次结构与多态
在 C++ 中,使用继承和多态,如果从包含虚函数的基类派生一个类,可以使用指向该基类的指针来调用派生对象中继承的虚函数。在类层次结构中,派生对象可以安全地向上转换为层次结构树中的任何继承对象类型。
例如,有一个简单的形状类层次结构, CShape
是 CSquare
的基类, CSquare