C++派生类指针转基类指针
时间: 2023-09-16 18:14:40 浏览: 125
在C++中,可以将派生类指针转换为基类指针,这被称为向上转型。这种转换是安全的,因为派生类继承了基类的成员。可以使用隐式转换或显式转换来实现向上转型。
隐式转换是指当派生类对象的指针赋值给基类指针时,编译器会自动进行转换。例如:
```cpp
class Base {
// 基类成员
};
class Derived : public Base {
// 派生类成员
};
int main() {
Derived derivedObj;
Base* basePtr = &derivedObj; // 隐式转换
return 0;
}
```
显式转换是指使用`static_cast`或`dynamic_cast`关键字进行转换。其中,`static_cast`用于在编译时进行类型检查的转换,而`dynamic_cast`用于在运行时进行类型检查的转换。使用显式转换时需要注意类型安全性。
```cpp
class Base {
// 基类成员
public:
virtual void func() { }
};
class Derived : public Base {
// 派生类成员
};
int main() {
Derived derivedObj;
Base* basePtr = static_cast<Base*>(&derivedObj); // 静态转换
return 0;
}
```
需要注意的是,如果基类指针指向的是派生类对象,而基类中没有虚函数,那么在使用基类指针调用派生类中的特定成员时,只能访问到基类中定义的成员。如果基类中有虚函数,使用基类指针调用派生类中的成员时,会根据实际对象的类型调用相应的函数。
阅读全文