【C++ 系列文章 -- 程序员考试 下午场 C++ 专题 201711 】

news2024/11/17 21:40:12

文章目录

    • 1.1 C++ 题目六
      • 1.1.1 填空(1)详解
      • 1.1.2 填空(2)详解
        • 1.1.2.1 C++ this 的使用
      • 1.1.3 填空(3)详解
      • 1.1.4 填空(4)详解
      • 1.1.5 填空(5)详解
      • 1.1.6 填空(6)详解

1.1 C++ 题目六

试题六(共15分)
阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。

【说明 】
以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。
在这里插入图片描述

using namespace std;
class Book;
class Visitor {
	public:
        virtual void visit(Book book)=0;
        //其它物品的visit方法
};
 
class Item {
	public:
		virtual void accept(Visitor visitor)=0;
		virtual double getPrice()=0;
};

class Book1{
	private:    
		double price;
	
	public:
        Book (double price) { //访问本元素2;
        }
        void accept(Visitor visitor) {3;
        }
        double getPrice() {
        			return price;        
        }
};
class Cashier4{
	private;
        double totalForCart;
	
	public:
        //访问Book类型对象的价格并累加5{
            //假设Book类型的物品价格超过10元打8折
            if(book->getPrice()<10.0) {
                  totalForCart+=book->getPrice();
            } else
                  totalForCart+=book->getPrice()0.8;
        }
        //其它visit方法和折扣策略类似,此处略
        double getTotal() {
              return totalForCart;
        }
};

class ShoppingCart {
	private:
        vector<Item>items;
	
	public:
        double calculatePrice() {
                Cashier visitor=new Cashier();

                for(int i=0;i <items.size();i++)</item>6;
                }
                double total=visitor->getTotal();
                return total;
        }

        void add(Iteme) {
                items.push_back(e);
         }
};</items.size();i++)></item*>

1.1.1 填空(1)详解

从下面的代码可以看出 类Book 是继承了父类Item,因为子类Book对父类中的两个虚函数都做了重载。

class Item {
	public:
		virtual void accept(Visitor visitor)=0;
		virtual double getPrice()=0;
};

class Book1{
	private:    
		double price;
	
	public:
        Book (double price) { //访问本元素2;
        }
        void accept(Visitor visitor) {3;
        }
        double getPrice() {
        			return price;        
        }
};

所以空格(1) 应该填:public Item, 那么为什么要采用public 继承呢?因为:

  • 经过 public 继承,基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:public, protected, private;
  • 经过 protected 继承,基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:protected, protected, private;
  • 经过 private 继承,基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:private, private, private

1.1.2 填空(2)详解

可以看到填空(2) 是子类 Book 构建函数的实现,这个时候可以看到“注释” : “访问本元素”,子类 Book 中有个成员变量 price,所以可以猜出来是给成员变量price赋值,所以空格(2)应该填this->price=price

1.1.2.1 C++ this 的使用

在 C++ 中,this 指针是一个特殊的指针,它指向当前对象的实例。在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。通过使用 this 指针,我们可以在成员函数中访问当前对象的成员变量,即使它们与函数参数或局部变量同名,这样可以避免命名冲突,并确保我们访问的是正确的变量。

1.1.3 填空(3)详解

填空(3) 是 子类Book 中成员函数 void accept(Visitor visitor)的具体实现,它的参数是基类Visitor, 但是这个基类在整个code中并没有使用到,而且 基类Visitor中的纯虚函数virtual void visit(Book book)=0参数类型为Book填空(3)所以填visitor->visit(this),因为this即指向Book 类型对象。且 C++ 的潜规则是类中的纯需函数一定要在子类中重载!!!

class Visitor {
	public:
        virtual void visit(Book book)=0;
        //其它物品的visit方法
};
 
class Item {
	public:
		virtual void accept(Visitor visitor)=0;
		virtual double getPrice()=0;
};

class Book1{
	private:    
		double price;
	
	public:
        Book (double price) { //访问本元素2;
        }
        void accept(Visitor visitor) {3;
        }
        double getPrice() {
        			return price;        
        }
};

1.1.4 填空(4)详解

由上节内容我们知道纯虚函数必须要在子类中重载,在整个code中没有找到 基类class Visitor的子类,所以猜测class Cashier 继承了 基类class Visitor, 也只有它可以继承了。所以空格(4)填写:public Visitor

class Cashier4{
	private;
        double totalForCart;
	
	public:
        //访问Book类型对象的价格并累加5{
            //假设Book类型的物品价格超过10元打8折
            if(book->getPrice()<10.0) {
                  totalForCart+=book->getPrice();
            } else
                  totalForCart+=book->getPrice()0.8;
        }
        //其它visit方法和折扣策略类似,此处略
        double getTotal() {
              return totalForCart;
        }
};

1.1.5 填空(5)详解

由于 纯虚函数必须要在子类中重载,所以 空格 (5) 应该填写void visit(Book*book)

1.1.6 填空(6)详解

从代码中可以看到空格(6)应该是个累加过程,所以应该填一个和价格计算相关的内容,我们知道价格的计算是在类Cashier的成员函数void visit(Book*book) 中实现的。Item 是 Book的父类,Book中实现了 Itme中的方法。所以向量items中的累加要调用的Book中的函数,Book中的函数只有accept 和 Visitor有关,所以空格(6)应该填items[i]->accept(visitor)

class ShoppingCart {
	private:
        vector<Item>items;
	
	public:
        double calculatePrice() {
                Cashier visitor=new Cashier();

                for(int i=0;i <items.size();i++)</item>6;
                }
                double total=visitor->getTotal();
                return total;
        }

        void add(Iteme) {
                items.push_back(e);
         }
};</items.size();i++)></item*>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1155793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

心理咨询预约小程序

随着微信小程序的日益普及&#xff0c;越来越多的人开始关注如何利用小程序来提供便捷的服务。对于心理咨询行业来说&#xff0c;搭建一个心理咨询预约小程序可以大大提高服务的效率和用户体验。本文以乔拓云平台为例&#xff0c;详细介绍如何轻松搭建一个心理咨询预约小程序。…

2023-简单点-yolox代码

yolox代码 yolox结构瞄一眼net代码常规convDWConv第一步第二步 CBA一套FocusSPPCSPDarknetFPNPANdecoupled predict headref yolox结构瞄一眼 net代码 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # Copyright (c) Megvii, Inc. and its affiliates.import torch from tor…

JMeter如何开展性能测试

文章目录 性能测试指标理解透彻以及测算微聊性能测试性能测试流程准备流程 ​&#x1f451;作者主页&#xff1a;Java冰激凌 性能测试指标理解透彻以及测算 虚拟用户数&#xff1a; 线程 用户并发数&#xff1a;指在某一时间&#xff0c;一定数量的虚拟用户同时对系统的某个功…

k8s、pod

Pod k8s中的port【端口&#xff1a;30000-32767】 port &#xff1a;为Service 在 cluster IP 上暴露的端口 targetPort&#xff1a;对应容器映射在 pod 端口上 nodePort&#xff1a;可以通过k8s 集群外部使用 node IP node port 访问Service containerPort&#xff1a;容…

【C++】多态 ⑦ ( 多态机制实现原理 | 虚函数表概念 | 虚函数表工作机制 | vptr 指针 | 虚函数表运行时机制 | 虚函数与动态联编 )

文章目录 一、多态原理1、多态成立的三个条件2、虚函数表概念3、虚函数表工作机制4、vptr 指针5、虚函数表运行时机制6、虚函数与动态联编 二、代码示例 - 虚函数表1、代码实例分析 - 虚函数表创建与使用2、完整代码示例 一、多态原理 1、多态成立的三个条件 " 多态 "…

BoredHackerBlog: Cloud AV RT日记

目录 信息搜集 WEB漏洞攻击 拿shell 信息搜集 首先ifconfig查看自己IP&#xff0c; netdiscover查看同网段下主机 第三个应该是目标靶机。用nmap查看靶机开放端口&#xff1a; 开放22和8080&#xff0c;看看8080开的啥服务 WEB漏洞攻击 看到让我们输入邀请码。有输入框的第…

【原创】java+swing+mysql无偿献血管理系统设计与实现

摘要&#xff1a; 无偿献血管理系统是为了实现无偿献血规范化、有序化、高效化的管理而设计的。本文主要介绍使用java语言开发一个基于C/S架构的无偿献血管理系统&#xff0c;提高无偿献血管理的工作效率。 功能分析&#xff1a; 系统主要提供给管理员、无偿献血人员&#x…

C语言实现把两个升序数组合并成一个升序数组

完整代码&#xff1a; // 把两个升序数组合并成一个升序数组 #include<stdio.h> //单个数组的长度 #define N 5int main(){int arr1[N]{1,4,7,8,9};int arr2[N]{2,3,6,9,10};//创建合并后数组int arr3[2*N];//j为arr1的指针&#xff0c;k为arr2的指针int j0,k0;printf(&…

Emscripten + CMakeLists.txt 将 C++ 项目编译成 WebAssembly(.wasm)/js,并编译 Html 测试

背景&#xff1a;Web 端需要使用已有的 C 库&#xff08;使用 CMake 编译&#xff09;&#xff0c;需要将 C 项目编译成 WebAssembly(.wasm) 供 js 调用。 上篇文章《Mac 上安装 Emscripten》 已讲解如何安装配置 Emscripten 环境。 本篇文章主要讲解如何将基于 CMakeLists 配…

测试C#调用Aplayer播放视频(2:VideoPlayer源码学习)

参考文献1除了介绍Aplayer组件的用法之外&#xff0c;还提供有demo下载以供学习&#xff0c;本文学习并记录其中的使用方式。   VideoPlayer项目使用C#在VS2013开发&#xff0c;其解决方案中包括VideoPlayer和VideoPlayer两个小项目&#xff0c;前者基于.net framework4.0&am…

Linux:文件操作

目录 一、关于文件 1、文件类的系统接口 2、文件的含义 二、文件操作 1、C语言文件相关接口 2、系统接口 open close write read 三、文件描述符 关于fd fd的分配规则 输出重定向示例 输入重定向示例 追加重定向示例 dup2函数 缓冲区 stdout与stderr perror…

大促期间如何应对低价链接

一年一度的大促双十一即将来临&#xff0c;品牌商、经销商在忙着出货&#xff0c;消费者也在积极比价&#xff0c;大促最直观的感觉就是价格&#xff0c;没有低价的大促是没有意义的&#xff0c;所以品牌要管的不是低价产品&#xff0c;而是在不受规则下的低价行为。 力维网络有…

KnowledgeGPT:利用检索和存储访问知识库上增强大型语言模型10.30

利用检索和存储访问知识库上增强大型语言模型 摘要引言2 相关研究3方法3.1 任务定义3.2 知识检索3.2.1 代码实现3.2.2 实体链接3.2.3 获取实体信息3.2.4 查找实体或值3.2.5 查找关系 3.3 知识存储 4 实验 摘要 大型语言模型&#xff08;LLM&#xff09;在自然语言处理领域展现…

SpringBoot 集成 Camunda

SpringBoot 集成 Camunda 1 pom.xml2 application.yml3 SQL4 启动5 进入流程页面 1 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XML…

nodejskoaMySQL 蒲公英旅游系统15565-计算机毕业设计项目选题推荐(附源码)

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。蒲公英旅游系统设计&#xff0c;主要的模块包括查看后台首页、轮播图&#xff08;轮播图管理&#xff09;、公告管理&#xff08;公告&#xff…

循环神经网络(RNN)与长短期记忆网络(LSTM)

前言&#xff1a; 通过前面的学习&#xff0c;我们以BP神经网络为基础&#xff0c;认识到了损失函数&#xff0c;激活函数&#xff0c;以及梯度下降法的原理&#xff1b;而后学习了卷积神经网络&#xff0c;知道图像识别是如何实现的。今天这篇文章&#xff0c;讲述的就是计算机…

X3DAudio1_7.dll是什么,解决计算机找不到X3DAudio1_7.dll文件的方法

作为一位程序员&#xff0c;我深知x3daudio1_7.dll丢失对电脑用户的影响。这个文件是DirectX的一个组件&#xff0c;它负责处理音频输出和输入。当这个文件丢失时&#xff0c;可能会导致电脑无法正常播放音频&#xff0c;甚至出现蓝屏等问题。那么&#xff0c;面对这个问题&…

xhadmin多应用SaaS框架的怎么进入后台?

xhadmin是什么&#xff1f; xhadmin 是一套基于最新技术的研发的多应用 Saas 框架&#xff0c;支持在线升级和安装模块及模板&#xff0c;拥有良好的开发框架、成熟稳定的技术解决方案、提供丰富的扩展功能。为开发者赋能&#xff0c;助力企业发展、国家富强&#xff0c;致力于…

Jetpack:025-Jetpack中的多点触控事件

文章目录 1. 概念介绍2. 使用方法2.1 缩放事件2.2 旋转事件2.3 平移事件2.4 综合事件 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中滚动事件相关的内容&#xff0c;本章回中主要介绍 多点解控事件。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xf…

国际阿里云CDN加速OSS资源教程!

当您需要加速OSS上的静态资源时&#xff0c;可以通过阿里云CDN加速OSS域名&#xff0c;实现静态资源的访问加速。本文详细介绍了通过CDN控制台实现OSS加速的操作流程和应用场景。 客户价值 阿里云OSS可提供低成本的存储&#xff0c;CDN可以实现静态资源加速分发。使用OSS作为C…