c++派生类指针可以指向基类对象吗
作者:野牛程序员:2023-08-07 10:21:50 C++阅读 2864
在C++中,派生类指针可以指向基类对象,这是多态的一种体现。由于派生类是从基类继承而来的,派生类对象包含了基类对象的部分或全部成员。因此,可以将派生类指针指向基类对象,并通过该指针访问基类对象的成员。
以下是一个示例,演示了派生类指针指向基类对象的情况:
#include <iostream> class Animal { public: void makeSound() { std::cout << "Animal makes a sound." << std::endl; } }; class Dog : public Animal { public: void makeSound() override { std::cout << "Dog barks: Woof! Woof!" << std::endl; } }; int main() { Dog dog; dog.makeSound(); // 输出: "Dog barks: Woof! Woof!" // 将派生类指针指向基类对象 Animal* animalPtr = &dog; // 通过派生类指针访问基类对象的成员 animalPtr->makeSound(); // 输出: "Animal makes a sound." return 0; }
在上述例子中,我们定义了一个基类 Animal
和一个派生类 Dog
,Dog
类继承自 Animal
类。我们创建了一个 Dog
对象 dog
并调用了 dog.makeSound()
方法,输出了派生类的方法调用结果。
然后,我们将派生类指针 animalPtr
指向了 dog
对象。虽然 animalPtr
是一个指向基类的指针,但由于多态的原因,通过 animalPtr
访问的方法是根据对象的实际类型来确定的。在这里,animalPtr->makeSound()
通过多态性调用了基类 Animal
的 makeSound()
方法,而不是派生类 Dog
的方法。
这样,通过派生类指针可以访问基类对象,这使得代码更加灵活和可扩展。在多态场景下,这种能力非常有用。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c++访问一个指针所指向的对象的成员
- 下一篇:C++中对象的动态建立与释放详解