c++ - 为什么 C++ 允许将指向基对象的指针转换为派生类的指针

标签 c++ pointers inheritance

<分区>

Possible Duplicate:
Downcasting using the Static_cast in C++

我很困惑什么时候我们需要将指向基对象的指针转换为派生类的指针? 谁能帮我举个例子?

最佳答案

你说的是哪种转化

如果它是关于向下转换(或动态转换,它们是同一种类型但在运行时验证)那么你可以这样做来强制类型检查器不要通过强制执行您指定的类型来检查该特定类型。

这意味着它可能会破坏您的代码,该特定指令中缺少类型安全保证,但有时需要它,即使好的设计本来就不需要它。

必要性是由这样一个事实给出的:如果没有强制转换,您将不允许调用派生类的任何方法,即使您确定指向基类的指针包含派生类(但编译器不能'验证它)。

关于c++ - 为什么 C++ 允许将指向基对象的指针转换为派生类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13486010/

相关文章:

c++ - 为什么 std::allocator<>::deallocate() 有一个未使用的 size_type 参数?

c++ - 一个变量中的最大指针数

c - memcpy 类似继承的结构 - 安全吗?

c++ - 为什么 setjmp 不保存堆栈?

c++ - boost::filesystem 递归获取每个文件的大小

c++ - 具有多个 OR 的 Xpath 查询不适用于 Windows 事件

c - 作为函数参数传递时如何访问 `int` 动态数组的数据?

c++ - 对 C++ 中的指针有几个疑问?

java - 使用接受 Kotlin 中 protected 类的公共(public)方法从 Java 类继承

swift - 覆盖 Swift 子类中的属性