建一个派生类对象,指向基类显示,再指向派生类显示
时间: 2023-05-13 19:07:34 浏览: 46
可以使用 C++ 中的指针和引用来实现这个操作。首先,我们需要定义一个基类和一个派生类:
```
class Base {
public:
virtual void display() {
std::cout << "This is the base class." << std::endl;
}
};
class Derived : public Base {
public:
void display() {
std::cout << "This is the derived class." << std::endl;
}
};
```
然后,我们可以创建一个指向基类的指针或引用,再将其指向派生类:
```
Base* basePtr = new Derived();
basePtr->display(); // 输出 "This is the derived class."
Base& baseRef = *basePtr;
baseRef.display(); // 输出 "This is the derived class."
```
注意,这里使用了虚函数来实现多态性,确保调用的是派生类的 `display()` 函数。
相关问题
派生类指针指向基类对象切割
派生类指针指向基类对象会发生切割,也称为对象切割(Object Slicing)。
当派生类指针指向基类对象时,只会保留基类部分的数据成员和方法,派生类特有的数据成员和方法会被丢弃,这就是切割。因为派生类对象比基类对象要大,所以基类对象无法完全容纳派生类对象,从而导致切割。
举个例子,如果有一个派生类D,它继承了一个基类B,而D有一个独有的数据成员c,如果将D的指针指向B的对象,则c会被丢弃,因为B类没有这个数据成员。
这种切割的情况可能会给程序带来问题,因此在使用派生类指针时,需要注意指针指向的对象是否是基类对象,以避免切割导致的错误。
基类指针指向派生类对象与派生类指针指向基类对象的区别
基本指针指向派生类对象与派生类指针指向基本类对象的区别在于对象的实际类型和指针所指向的类型不同。基本指针只能够访问基类的成员,而派生指针能够访问派生类和基类的成员。需要注意的是,使用派生指针访问基类成员时需要使用强制类型转换。
相关推荐
















