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

c++基类指针调用子类方法

作者:野牛程序员:2023-08-07 10:12:12 C++阅读 3129

在C++中,可以使用基类指针来调用子类的方法,这是通过虚函数和多态实现的。为了能够在基类指针上调用子类的方法,需要满足以下两个条件:

  1. 子类方法必须在基类中声明为虚函数。

  2. 子类必须继承自基类。

当子类继承自基类并重写了虚函数时,基类指针可以指向子类对象,并调用子类重写的方法。

下面是一个简单的示例,演示如何使用基类指针调用子类方法:

#include <iostream>

class Animal {
public:
    virtual 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;
    }
};

class Cat : public Animal {
public:
    void makeSound() override {
        std::cout << "Cat meows: Meow! Meow!" << std::endl;
    }
};

int main() {
    Animal* animal1 = new Dog();
    Animal* animal2 = new Cat();

    // 使用基类指针调用子类方法
    animal1->makeSound(); // 调用的是Dog类的makeSound方法
    animal2->makeSound(); // 调用的是Cat类的makeSound方法

    delete animal1;
    delete animal2;

    return 0;
}

在上述例子中,定义了一个基类Animal,以及两个子类DogCat,它们都继承自Animal类,并重写了makeSound()虚函数。在main()函数中,我们使用基类指针分别指向DogCat对象,并通过这些指针调用了相应的子类方法。由于makeSound()是虚函数且被子类重写,所以调用的是子类的方法而不是基类的方法。

使用基类指针来调用子类的方法是多态的体现,它允许我们以统一的方式处理不同类型的子类对象。这在面向对象编程中是一个重要的概念,使得代码更加灵活和可扩展。


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

最新推荐

热门点击