当前位置:首页 C++ > 正文

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 和一个派生类 DogDog 类继承自 Animal 类。我们创建了一个 Dog 对象 dog 并调用了 dog.makeSound() 方法,输出了派生类的方法调用结果。

然后,我们将派生类指针 animalPtr 指向了 dog 对象。虽然 animalPtr 是一个指向基类的指针,但由于多态的原因,通过 animalPtr 访问的方法是根据对象的实际类型来确定的。在这里,animalPtr->makeSound() 通过多态性调用了基类 AnimalmakeSound() 方法,而不是派生类 Dog 的方法。

这样,通过派生类指针可以访问基类对象,这使得代码更加灵活和可扩展。在多态场景下,这种能力非常有用。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击