继承使子类复用父类成员,多态通过虚函数实现运行时动态绑定;示例中Animal为基类,Dog和Cat继承并重写makeSound,通过基类指针调用实现不同行为。

在C++中,继承和多态是面向对象编程的两个核心特性。通过继承,子类可以复用父类的成员变量和方法;通过多态,可以在运行时根据对象的实际类型调用对应的函数。下面通过一个简单示例说明如何实现。
1. 继承的基本实现
继承允许一个类(派生类)获取另一个类(基类)的属性和方法。使用冒号 : 来指定继承关系。
class Animal {
public:
void eat() {
cout }
virtual void makeSound() {
cout }
};
class Dog : public Animal {
public:
void makeSound() override {
cout }
};
class Cat : public Animal {
public:
void makeSound() override {
cout }
};
2. 多态的实现方式
多态依赖于虚函数和指针或引用。将基类中的函数声明为 virtual,在派生类中重写该函数,再通过基类指针或引用调用,就能实现运行时多态。
int main() {
Animal* animal1 = new Dog();
Animal* animal2 = new Cat();
animal1->makeSound(); // 输出: Dog barks: Woof!
animal2->makeSound(); // 输出: Cat meows: Meow!
delete animal1;
delete animal2;
return 0;
}
3. 关键点说明
基类中需要将希望被重写的函数声明为 virtual,否则无法实现动态绑定。使用 override 关键字明确表示重写虚函数,有助于编译器检查错误。多态只能通过指针或引用触发,直接定义对象调用不会体现多态行为。若基类有虚函数,建议定义虚析构函数,防止内存泄漏。
4. 完整示例代码
把上面所有部分组合起来:
立即学习“C++免费学习笔记(深入)”;
#include iostream>
using namespace std;
class Animal {
public:
virtual void makeSound() {
cout }
virtual ~Animal() = default; // 虚析构函数
};
class Dog : public Animal {
public:
void makeSound() override {
cout }
};
class Cat : public Animal {
public:
void makeSound() override {
cout }
};
int main() {
Animal* pets[] = {new Dog(), new Cat()};
for(int i = 0; i pets[i]->makeSound();
}
for(int i = 0; i delete pets[i];
}
return 0;
}
基本上就这些。理解虚函数表和动态绑定机制能更深入掌握多态底层原理,但在日常开发中,按上述模式使用已足够应对大多数场景。注意设计基类接口时要合理,避免过度继承。不复杂但容易忽略的是虚析构函数和 override 的使用。
以上就是c++++怎么实现继承和多态_c++继承与多态实现示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1479248.html
微信扫一扫
支付宝扫一扫