派生类的指针指向基类
时间: 2023-12-25 13:04:37 浏览: 29
是的,派生类的指针可以指向基类。在C++中,派生类是从基类继承而来的,因此派生类对象中包含了基类对象的所有成员变量和成员函数。由于基类指针可以指向派生类对象中的基类部分,因此可以用基类的指针或引用绑定派生类对象。同时,在public派生方式的情况下,派生类对象的指针可以直接赋值给基类指针。下面是一个例子:
```cpp
#include <iostream>
using namespace std;
class Base {
public:
void show() {
cout << "This is the base class." << endl;
}
};
class Derived : public Base {
public:
void display() {
cout << "This is the derived class." << endl;
}
};
int main() {
Derived objDerived;
Base *ptrBase = &objDerived;
ptrBase->show(); // 输出:This is the base class.
return 0;
}
```
相关问题
派生类指针指向基类对象切割
派生类指针指向基类对象会发生切割,也称为对象切割(Object Slicing)。
当派生类指针指向基类对象时,只会保留基类部分的数据成员和方法,派生类特有的数据成员和方法会被丢弃,这就是切割。因为派生类对象比基类对象要大,所以基类对象无法完全容纳派生类对象,从而导致切割。
举个例子,如果有一个派生类D,它继承了一个基类B,而D有一个独有的数据成员c,如果将D的指针指向B的对象,则c会被丢弃,因为B类没有这个数据成员。
这种切割的情况可能会给程序带来问题,因此在使用派生类指针时,需要注意指针指向的对象是否是基类对象,以避免切割导致的错误。
基类指针指向派生类对象与派生类指针指向基类对象的区别
基本指针指向派生类对象与派生类指针指向基本类对象的区别在于对象的实际类型和指针所指向的类型不同。基本指针只能够访问基类的成员,而派生指针能够访问派生类和基类的成员。需要注意的是,使用派生指针访问基类成员时需要使用强制类型转换。