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

软考中级软件设计师(下午题)--- 设计模式C++建立

1.

1.

虚函数是指只在当前类下定义,但不在当前类下实现

虚函数的定义格式为 virtual 返回类型格式 函数名() = 0

是就是ConcreteCommand类为当前类的子类,所以函数实现放在了ConcreteCommand类,找了一圈发现是void Execute(),于virtual void Execute() = 0

void Execute()上面 ConcreteCommand(Receiver* receiver) : receiver(receiver){} 为构造函数,可以理解成对通过类创建出来的对象进行初始化;如果不带参数,由程序员给对象中的成员变量赋初值;如果带参数,那么在new 对象的时候,就可以由用户来给成员变量赋初值;: 后的叫做初始化列表,即用传来的参数receiver来初始化成员变量receiver

2.

根据类图可以看到,Execute函数是用作receiver->action()


3.

创建对象前,要先分清楚对象的栈分配与堆分配

栈分配:Invoker invoker(参数)

堆分配:Invoker* invoker = new Invoker(参数)

具体的区别如下,有点像变量与指针的关系

因为只对由 ConcreteCommand 创建出的对象 command 进行delete了,所以 command为堆分配,invoker为栈分配

ConcreteCommand* command = new ConcreteCommand(&receiver)Invoker invoker(command)

因为给到 command 对象中的成员变量类型为接收者指针,所以还得要对 receiver 取地址

最后使用时,invoker.executeCommand()

2.

1.

public Subject,理由同上题中的1

2.

observers是一个指针数组,it是一个迭代器指针,所以使用时应该是先对迭代器指针解引用,即 *it 然后再对指针进行使用,Observer 类当中只有一个函数,那么猜测大概率就是要运用该函数了;当然,也行通过类图发现:EnvironmentData类为Subject的子类,即类图中的ConcreteSubject,得update;所以是(*it) -> update(temperature,humidity,cleanness)


3.上面注释提到:当主题发声改变时通知观察者,于是measurementsChanged()以后,得要notifyObservers()

4.主题变了以后,要采用主题更改函数来告知主题变了,所以是measurementsChanged()

5.

与该题的第2问同理,CurrentConditionsDisplay指的是类图中的ConcreteObserver,有register interest,即 registerObserver 函数,该函数在subject类当中,所以要调用envData 成员变量,即envData -> registerObserver(this)

this指针指的是调用这个函数的那个对象,这边可以看作是由 CurrentConditionsDisplay 类创建出来的 currentDisplay

3.

1.根据前面的函数返回类型,要求返回一个 Memento 类型的数据,Memento类中有定义构造函数,所以直接返回这个构造函数对象,即Memento(state)回去即可

2.getStateFromMemento暗示了 state =Memento.getState()

3. and 4.

main函数中分别有调用,get函数与add函数,index明显是个整型变量,所以4为get(int index),3为add(Memento state)

5.直接抄下面的,originator->saveStateToMemento()

http://www.jsqmd.com/news/303122/

相关文章:

  • 小包免税退场之后,亚马逊卖家要重算三笔账:仓、货、税
  • 从0开始学目标检测:YOLOv13镜像手把手教学
  • 乐鑫科技发布全新ESP32-E22!首款三频 Wi-Fi 6E 高性能协处理器
  • 2026年GEO服务商排名揭晓:原圈科技如何破解AI增长难题?
  • GEO服务商深度排名:原圈科技何以领跑2026年AI营销新格局?
  • 2026年GEO服务商深度评测:榜首原圈科技如何应对AI获客挑战?
  • 低成本数字频率计设计方案:适合初学者的实现路径
  • GEO服务商榜单:高客单价行业如何选型?原圈科技领跑AI营销
  • Z-Image-Turbo与Stable Diffusion对比:速度、质量、资源占用全面评测
  • 从数据准备到模型保存:Unsloth完整训练流程
  • Qwen3-Embedding-0.6B实战案例:智能客服文本聚类系统搭建详细步骤
  • 2026全国出国雅思培训机构口碑排行榜TOP5|深度测评,靠谱机构闭眼选
  • 低成本微调大模型,Unsloth助力个人开发者
  • 2025年本地检定器品牌TOP10:性能与口碑双重验证,贯入式砂浆强度检测仪/数显高强回弹仪/裂缝测宽仪/高强回弹仪检定器检定器生产厂家推荐
  • 超详细版PetaLinux OTA升级工业部署方案
  • Flutter for OpenHarmony:通过组合现有 Widget 构建自定义组件
  • 2026全国出国雅思培训机构口碑排行榜TOP5|深度测评,靠谱机构不踩坑
  • Qwen3-1.7B模型切换失败?多模型共存部署策略详解
  • Pspice基础操作指南:新手必看完整示例
  • 科哥出品Emotion2Vec+镜像适合哪些人群?使用建议汇总
  • YOLOv13在PCB质检中的应用,准确率大幅提升
  • 2026矿用一般型电力变压器制造公司费用对比,技术强的是哪家
  • ARM处理器选型指南:工业控制场景全面讲解
  • 张高兴的大模型开发实战:(八)在 Dify 中使用 MCP 协议
  • 比SOTA快9倍,谷歌DeepMind时空重建,把视频变成时空搜索引擎
  • 为什么选Qwen3-1.7B?轻量高效大模型部署指南
  • 一句话搞定部署!Unsloth命令行使用技巧
  • GPEN人像修复实战:一张模糊照如何变高清写真
  • Qwen3-0.6B技术拆解:为什么它能在低配运行
  • Glyph视觉压缩流程拆解,一步步教你上手