📜  C ++ |继承|问题7(1)

📅  最后修改于: 2023-12-03 15:13:45.288000             🧑  作者: Mango

C++ | 继承 | 问题7

在 C++ 编程中,继承是一种重要的概念,它允许一个类从另一个类派生出来,从而获得父类的属性和方法。问题7涉及继承的一些高级用法,例如虚函数和多态性。

背景

假设我们有两个类: AnimalDogAnimal 类是一个基类,它具有一些通用的属性和方法,例如 namesoundDog 类从 Animal 类派生,继承了它的属性和方法,并且还可以定义自己的属性和方法。

问题

问题7要求我们实现一个虚函数的例子,并且使用多态性来模拟不同类型的动物作出不同的声音。

解决方案

首先,我们需要定义一个基类 Animal,其中包含虚函数 makeSound():

class Animal {
protected:
    std::string name;
    std::string sound;

public:
    // 构造函数
    Animal(std::string name, std::string sound) : name(name), sound(sound) {}

    // 虚函数
    virtual void makeSound() {
        std::cout << "The " << name << " makes a sound: " << sound << std::endl;
    }
};

然后,我们派生一个类 Dog 来实现我们自己的方法和属性,同时重写虚函数 makeSound():

class Dog : public Animal {
private:
    std::string breed;

public:
    // 构造函数
    Dog(std::string name, std::string sound, std::string breed)
        : Animal(name, sound), breed(breed) {}

    // 重写虚函数
    void makeSound() override {
        std::cout << "The " << breed << " dog named " << name << " barks: " << sound << std::endl;
    }
};

最后,我们创建一个 main 函数来测试我们的代码:

int main() {
    Animal* animal = new Animal("Animal", "generic sound");
    Animal* dog = new Dog("Fido", "woof woof", "Bulldog");

    animal->makeSound();
    dog->makeSound();

    delete animal;
    delete dog;

    return 0;
}
运行结果

该程序的运行结果应该会输出以下内容:

The Animal makes a sound: generic sound
The Bulldog dog named Fido barks: woof woof

通过使用虚函数和多态性,我们可以根据对象的类型执行不同的方法。这使得我们的代码更加灵活和可扩展。

以上就是关于 C++ 继承中虚函数和多态性的问题7的介绍。希望对程序员们有所帮助和启发!