面试题---使用C++实现多态的例子

多态是面向对象编程中的一个核心概念,它允许我们使用父类类型的引用来引用子类对象,并且在运行时根据对象的实际类型来执行相应的操作。下面是一个使用C++实现多态的例子:

// 定义一个父类 Animal
class Animal {
public:
    virtual void makeSound() {
        std::cout << "The animal makes a sound" << std::endl;
    }
    virtual ~Animal() {} // 虚析构函数确保子类正确释放
};

// 定义一个子类 Dog,继承自 Animal 类
class Dog : public Animal {
public:
    void makeSound() override {
        std::cout << "The dog barks" << std::endl;
    }
};

// 定义一个子类 Cat,也继承自 Animal 类
class Cat : public Animal {
public:
    void makeSound() override {
        std::cout << "The cat meows" << std::endl;
    }
};

// 测试类
int main() {
    // 创建一个 Animal 指针数组,可以存放 Animal 类型的任何子类对象的指针
    Animal* animals[2];
    
    // 创建 Dog 和 Cat 对象,并将它们的地址赋值给 Animal 指针数组
    animals[0] = new Dog();
    animals[1] = new Cat();
    
    // 通过 Animal 指针数组调用 makeSound 方法,实现多态
    for (int i = 0; i < 2; ++i) {
        animals[i]->makeSound(); // 根据实际对象的类型调用不同的方法
    }
    
    // 释放动态分配的内存
    delete animals[0];
    delete animals[1];
    
    return 0;
}

在这个例子中,定义了三个类:Animal(动物)、Dog(狗)和Cat(猫)。Animal 类有一个虚函数 makeSound(),该函数在 Dog 和 Cat 类中被重写。在 main() 函数中,创建了一个 Animal 类型的指针数组 animals,但将 Dog 和 Cat 对象的地址赋值给了这个数组。当我们遍历这个数组并调用每个元素的 makeSound() 方法时,由于 makeSound() 是一个虚函数,所以会根据实际对象的类型(Dog 或 Cat)来调用相应的方法,这就是多态的体现。最后,记得释放了动态分配的内存。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值