这里为什么不是派生类对象对象的地址赋值给基类的指针
时间: 2024-02-11 10:07:49 浏览: 69
2021-2022计算机二级等级考试试题及答案No.1927.docx
实际上,将派生类对象的地址赋值给基类指针也是可以的,这也是向上转型的一种形式。例如,假设有一个 `Dog` 对象,可以将其地址赋值给一个 `Animal` 指针,如下所示:
```
Dog* dog = new Dog();
Animal* animal = dog;
```
在这里,`dog` 指针指向一个 `Dog` 对象,然后将其地址赋值给 `animal` 指针,这是合法的,因为 `Dog` 是 `Animal` 的公有派生类。这种转换被称为向上转型,因为它将一个派生类指针转换为一个基类指针。
需要注意的是,如果在向上转型之后使用基类指针调用虚函数,将调用基类中的实现,而不是派生类中的实现。如果想要调用派生类中的实现,需要使用动态绑定技术,即将虚函数声明为虚函数,并在派生类中覆盖该函数。
阅读全文