首页 > 后端开发 > C++ > 正文

c++中如何实现多态_c++多态实现方法

裘德小鎮的故事
发布: 2025-09-27 20:25:01
原创
1005人浏览过
C++中多态分为运行时和编译时两种,运行时多态通过虚函数和继承实现,由基类指针或引用在运行时调用派生类重写函数,如Animal基类的speak()被Dog和Cat类重写,通过new创建对象并调用对应版本;纯虚函数用于定义抽象基类,强制派生类实现特定接口,如Shape类的area();编译时多态通过函数重载和模板实现,函数调用在编译期确定,如print函数重载不同类型,模板函数max为不同类型生成独立实例,静态多态效率高但需类型明确,动态多态灵活但有虚函数表开销,应根据需求选择。

c++中如何实现多态_c++多态实现方法

在C++中,多态是面向对象编程的核心特性之一,它允许同一接口调用不同对象的特定实现。多态主要通过虚函数继承机制来实现,分为编译时多态和运行时多态。

运行时多态(动态多态)

运行时多态是C++中最常见的多态形式,依赖于基类指针或引用调用虚函数,在程序运行时确定具体调用哪个派生类的函数。

实现步骤:

  • 在基类中声明虚函数(使用 virtual 关键字)
  • 派生类重写(override)该虚函数
  • 通过基类指针或引用指向派生类对象并调用函数

示例代码:

立即学习C++免费学习笔记(深入)”;

#include <iostream>
using namespace std;
<p>class Animal {
public:
virtual void speak() {
cout << "Animal speaks" << endl;
}
};</p><p>class Dog : public Animal {
public:
void speak() override {
cout << "Dog barks" << endl;
}
};</p><p>class Cat : public Animal {
public:
void speak() override {
cout << "Cat meows" << endl;
}
};</p><p>int main() {
Animal<em> a1 = new Dog();
Animal</em> a2 = new Cat();</p><pre class='brush:php;toolbar:false;'>a1->speak(); // 输出: Dog barks
a2->speak(); // 输出: Cat meows

delete a1;
delete a2;
return 0;
登录后复制

}

在这个例子中,speak() 是虚函数,调用哪个版本由实际对象类型决定,而不是指针类型。

纯虚函数与抽象基类

如果希望基类中的函数没有默认实现,强制派生类提供自己的实现,可以使用纯虚函数

语法:
virtual 返回类型 函数名() = 0;

ViiTor实时翻译
ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116
查看详情 ViiTor实时翻译

包含纯虚函数的类称为抽象类,不能实例化。

示例:

class Shape {
public:
    virtual double area() = 0; // 纯虚函数
};
<p>class Circle : public Shape {
double radius;
public:
Circle(double r) : radius(r) {}
double area() override {
return 3.14159 <em> radius </em> radius;
}
};</p>
登录后复制

编译时多态(静态多态)

编译时多态主要通过函数重载模板实现,调用哪个函数在编译阶段就已确定。

函数重载示例:

void print(int x) { cout << "Integer: " << x << endl; }
void print(double x) { cout << "Double: " << x << endl; }
void print(string x) { cout << "String: " << x << endl; }
登录后复制

模板实现泛型多态:

template<typename T>
T max(T a, T b) {
    return (a > b) ? a & b;
}
登录后复制

模板在编译时为每种类型生成对应的函数版本,属于静态多态。

基本上就这些。运行时多态靠虚函数表和指针实现,灵活但有轻微性能开销;编译时多态效率高,但需要类型在编译期明确。根据需求选择合适方式即可。

以上就是c++++中如何实现多态_c++多态实现方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号