<p>子类指针转父类指针可隐式完成,安全且推荐直接赋值,如Parent* parentPtr = childPtr;涉及多态时需父类函数为virtual;显式转换可用static_cast但非必需;公有继承是前提,向下转型应使用dynamic_cast确保安全。</p>

在C++中,将子类指针转换为父类指针是一个自然且安全的过程,因为子类对象“是一个”父类对象。这种转换属于向上转型(Upcasting),可以隐式完成,不需要显式类型转换。
示例代码:
#include <iostream>
using namespace std;
<p>class Parent {
public:
virtual void speak() {
cout << "Parent speaking" << endl;
}
};</p><p>class Child : public Parent {
public:
void speak() override {
cout << "Child speaking" << endl;
}</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">void play() {
cout << "Child is playing" << endl;
}};
int main() { Child* childPtr = new Child();
// 隐式转换:子类指针转父类指针 Parent* parentPtr = childPtr; parentPtr->speak(); // 输出: Child speaking(多态生效) delete childPtr; return 0;
} 这种方式安全、简洁,是C++中标准做法。
语法:
立即学习“C++免费学习笔记(深入)”;
Parent* parentPtr = static_cast<Parent*>(childPtr);
以上就是c++++中如何将子类指针转换为父类指针_c++父子类指针转换方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号