当前位置: 首页 > news >正文

网站做多久梧州网站设计制作服务至上

网站做多久,梧州网站设计制作服务至上,响应式网站建设价位,网站建设任职资格文章目录 虚函数 (Virtual Function)纯虚函数 (Pure Virtual Function)主要区别实际应用示例 C中的虚函数和纯虚函数是实现多态性的重要机制。 虚函数 (Virtual Function) 虚函数是在基类中用virtual关键字声明的函数,它允许派生类重写(override)该函数的实现。当…

文章目录

    • 虚函数 (Virtual Function)
    • 纯虚函数 (Pure Virtual Function)
    • 主要区别
    • 实际应用示例

C++中的虚函数和纯虚函数是实现多态性的重要机制。

虚函数 (Virtual Function)

虚函数是在基类中用virtual关键字声明的函数,它允许派生类重写(override)该函数的实现。当通过基类指针或引用调用虚函数时,会根据对象的实际类型来决定调用哪个版本的函数,这就是动态绑定或运行时多态。

class Base {
public:virtual void show() {cout << "Base class show function" << endl;}virtual ~Base() {}  // 虚析构函数
};class Derived : public Base {
public:void show() override {cout << "Derived class show function" << endl;}
};

纯虚函数 (Pure Virtual Function)

纯虚函数是在虚函数声明后面加上= 0的函数,它没有实现。包含纯虚函数的类被称为抽象类,不能被实例化。派生类必须实现所有纯虚函数才能被实例化。

class AbstractBase {
public:virtual void pureVirtualFunction() = 0;  // 纯虚函数virtual void normalVirtualFunction() {   // 普通虚函数cout << "Normal virtual function" << endl;}virtual ~AbstractBase() {}
};

主要区别

实现方面:虚函数有默认实现,纯虚函数没有实现

类的实例化:包含纯虚函数的类是抽象类,不能实例化;只包含虚函数的类可以实例化

派生类要求:派生类可以选择是否重写虚函数,但必须实现所有继承的纯虚函数

设计意图:虚函数提供默认行为但允许定制,纯虚函数强制派生类提供具体实现

实际应用示例

#include <iostream>
#include <vector>
#include <memory>
using namespace std;// 抽象基类
class Animal {
public:virtual void makeSound() = 0;  // 纯虚函数virtual void sleep() {         // 虚函数cout << "Animal is sleeping" << endl;}virtual ~Animal() {}
};class Dog : public Animal {
public:void makeSound() override {cout << "Woof!" << endl;}
};class Cat : public Animal {
public:void makeSound() override {cout << "Meow!" << endl;}void sleep() override {cout << "Cat is sleeping on the sofa" << endl;}
};int main() {vector<unique_ptr<Animal>> animals;animals.push_back(make_unique<Dog>());animals.push_back(make_unique<Cat>());for (auto& animal : animals) {animal->makeSound();  // 多态调用animal->sleep();      // 多态调用}return 0;
}

这种设计模式在实际开发中非常有用,比如图形界面框架中的控件基类、游戏引擎中的实体类、以及各种设计模式的实现中都会大量使用虚函数和纯虚函数来实现灵活的多态架构。

http://www.dtcms.com/a/554577.html

相关文章:

  • 凉山州住房和城乡建设厅网站王烨老师
  • Metrics Server 完整配置安装手册
  • 中小型企业建设网站六安政务中心网站
  • reactnative下拉选择
  • 操作系统基础·3 进程线程模型
  • CTFHub XSS通关2:存储型
  • 递归专题3 - 回溯算法十大类型
  • python全栈-数据分析软件tableau的使用
  • 交流电里的电子咋流动?不是往前跑,而是来回 “晃”
  • 做网站写代码怎么样免费网站建设基础步骤
  • 网站.cc域名网站常见结构有那些
  • 网上做兼职老师的正规网站搭建网站的步骤有哪些
  • python进阶教程10:面向对象、super()和元类
  • 大同建设银行保安招聘网站商品展示的网站源码
  • 中交建设集团 网站win10系统可以做网站搭建
  • 做网站建设怎么介绍自己网页图片文字识别
  • 内部类和Object类
  • B049基于博途西门子1200PLC红绿灯控制系统仿真
  • 淘宝手机网站模板下载安装公司网站模板大全
  • 专属虚拟环境:Hugging Face数据集批量下载(无登录+国内加速)完整指南
  • 域名访问网站应该怎么做高端网站建设济南兴田德润简介电话
  • **新一代券商与机构专业交易系统开发:从国际金融变局到技术架构重构**
  • 最好网站建设公司哪家好阳泉集团网站建设
  • 电子商务网站怎么做素材包wordpress 浮窗
  • 海东企业网站建设公司南村网站建设
  • 宁波市高等级公路建设指挥部网站扁平化设计网站
  • e建网站网站设置访问权限
  • 查找(无序线性、有序线性、二分查找)
  • 不同规模企业如何选择与进化营销费用管理?
  • 备案期间网站中小企业