蓝桥杯第十五界软件测试线下省赛题目分析及解决

embedded/2024/10/11 11:19:30/

PS 需要第十五界蓝桥杯被测系统或者功能测试模板、单元测试被测代码、自动化测试被测代码请加🐧:1940787338 备注:15界蓝桥杯省赛软件测试

题目1:功能测试

题目描述

​ 某物流公司的货运收费标准根据重量、距离和节假日三个因素来确定。如果运输地点在本省,那么收费标准如下:(1)
如果重量在

  • 0到50公斤之间(含50公斤),每公斤运费为8元;
  • 如果重量在51到100公斤之间(含100公斤),每公斤运费为12元;
  • 如果重量超过100公斤,每公斤运费为16元;
    此外,如果运输发生在节假日,每公斤运费会额外增加2元。

如果运输地点在外省,那么收费标准如下:

  • 如果重量在0到50公斤之间(含50公斤),每公斤运费为15元;
  • 如果重量在51到100公斤之间(含100公斤),每公斤运费为20元;
  • 如果重量超过 100公斤,每公斤运费为25元;
  • 此外,如果运输发生在节假日,每公斤的运费会额外增加5元。

解题步骤

​ 首先,我们分析题目,列出一下条件桩,可知条件有 C1 重量 C2 运输地点 C3 是不是发生在节假日

1、列出条件桩和条件项

在这里插入图片描述

​ 根据排列组合公式 我们可以得出有12条测试用例

2、列出动作桩和动作项
动作桩动作项
A1:每公斤运费8T/F
A2:每公斤运费12T/F
A3:每公斤运费16T/F
A4:每公斤额外增加2元T/F
A5:每公斤运费15元T/F
A6:每公斤运费20元T/F
A7:每公斤运费25元T/F
A8:每公斤运费额外增加5元T/F
3、写出判定表

在这里插入图片描述

4、根据判定表写出测试用例
编号重量(公斤)省份节假日预期结果
case11本省10元
case21本省8元
case31外省20元
case41外省15元
case551本省918元
case651本省612元
case751外省1275元
case851外省1020元
case9101本省1818元
case10101本省1616元
case11101外省2020元
case12101外省2525元

综合测试用例

【功能模块】
模块名称:运费模板
功能名称:【搜索】功能(红框标记出来的部分)
【功能截图】

在这里插入图片描述

判分规则

​ 本题满分16分(主要考察测试用例的综合设计思路,会从用例覆度编写规范两个方面进行判分。

  • 用例覆盖度:每覆盖1条用例得1分,最高得11分。
  • 编写规范:按照模板的说明进行规范填写,规范最高得5分。
  • 提交的用例数目不要超过11条,否则只对前11条用例进行判分。

【答案提交】
答案完成后,选手需把【省赛测试用例.xlsx】文件保存到【答案提交】文件夹中,等待和其他答案一起提交。

用例答案

用例编号一级功能二级功能前置条件用例标题操作步骤测试数据预期结果用例优先级
YFMB-SS-001运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面不输入【模块名称】(为空),进行搜索操作1. 输入正确的【模块名称】(为空); 2. 点击【搜索】;模块名称:(为空)查询全部数据
YFMB-SS-002运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面 3. 页面中有【模块名称】数据输入精确的【模块名称】(已存在),进行搜索1. 输入正确的【模块名称】; 2. 点击【搜索】;模块名称:包邮正确显示查找的数据
YFMB-SS-003运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面 3. 页面中有【模块名称】数据输入模糊的【模块名称】(一个或多个),进行搜索1. 输入正确的【模块名称】; 2. 点击【搜索】;模块名称:广州单正确显示查找的数据
YFMB-SS-004运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面 3. 页面中有【模块名称】数据输入含有特殊字符的【模块名称】(一个或多个),进行搜索1. 输入正确的【模块名称】; 2. 点击【搜索】;模块名称:#¥%……&正确显示查找的数据
YFMB-SS-005运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面输入不存在【模块名称】,进行搜索1. 输入正确的【模块名称】; 2. 点击【搜索】;模块名称:北京页面正确显示“暂无数据”
YFMB-SS-006运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面输入【模板名称】,进行清空1. 输入正确的【模块名称】; 2. 点击【清空】;模块名称:北京【模块名称】输入框内容被清空
YFMB-SS-007运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面输入【模板名称】,输入框的×清空1. 输入正确的【模块名称】; 2. 点击输入框内的【×】;模块名称:北京【模块名称】输入框内容被清空
YFMB-SS-008运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面 3. 页面中有【模块名称】数据输入【模板名称】,进行回车搜索1. 输入正确的【模块名称】; 2. 点击键盘【回车】;模块名称:包邮正确显示查找的数据
YFMB-SS-009运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面输入【模板名称】(十万个字),进行回车搜索1. 输入正确的【模块名称】(十万个字); 2. 点击键盘【回车】;模块名称:一二三四五…等十万个字提示:字符数超出限制
YFMB-SS-010运费模板搜索1. 已成功登录系统 2. 打开【运费模板】页面 3. 页面中有【模块名称】数据输入【模板名称】(含有空格),进行搜索1. 输入正确的【模块名称】(含有空格); 2. 点击键盘【回车】;模块名称:包 邮去除空格,然后进行搜索

题目2:缺陷报告

题目描述

​ 功能测试题目3(编写缺陷报告)(满分 40分)
​ 利用所学知识,请对被测系统中的如下2个页面进行测试,寻找其中预埋的缺陷,包括但不限于功能缺陷和易用性界面缺陷。并把发现的缺陷填写在指定的【省赛缺陷报告.xisx】文件中。

在这里插入图片描述

在这里插入图片描述

下面是16个Bug

缺陷编号功能名称缺陷描述操作步骤预期结果实际结果缺陷级别
YFMB-BUG-001运费模板运费模板页面,点击【清空】按钮没有反应1. 登录系统->进入运费模板页面 2. 输入【模板名称】 3. 点击【清空】清空【模板名称】输入框的内容【清空】按钮没有反应1
YFMB-BUG-002运费模板运费模板页面,点击【全选】复选框,偶数行不选中1. 登录系统->进入运费模板页面 2. 点击【全选】复选框所有数据被选中只选中了奇数行数据1
YFMB-BUG-003运费模板运费模板页面,【批量删除】按钮无法删除所有选中数据1. 登录系统->进入运费模板页面 2. 点击【全选】复选框 3. 点击【批量删除】所有被选中的数据都删除成功只删除了第一条数据1
YFMB-BUG-004运费模板运费模板页面,【修改】、【删除】按钮的图标显示不正确1. 登录系统->进入运费模板页面 2. 查看【修改】、【删除】按钮【删除】按钮显示垃圾桶图标 【修改】按钮显示笔图标【删除】、【修改】按钮图标反过来了2
YFMB-BUG-005运费模板运费模板页面,【搜索】、【清空】按钮没有对齐,不美观1. 登录系统->进入运费模板页面 2. 查看【搜索】、【清空】按钮【搜索】、【清空】按钮对齐,且间距相同【搜索】、【清空】按钮没有对齐,间距不相同2
YFMB-BUG-006运费模板运费模板页面,【模板名称】不支持模糊匹配1. 登录系统->进入运费模板页面 2. 【运费模板】输入:包 3. 点击【搜索】或按【回车】输入框支持模糊匹配,且正确查询数据不支持模糊匹配1
YFMB-BUG-007运费模板运费模板页面,【刷新】按钮没有反应1. 登录系统->进入运费模板页面 2. 点击页面上【刷新】按钮图标页面数据进行刷新【刷新】按钮图标没有反应1
YFMB-BUG-008运费模板运费管理页面,【模板名称】输入过多的字符提示不正确1. 登录系统->进入运费模板页面 2. 【模板名称】输入5000字以上字符提示:字符长度超出限制提示:服务器出了点小差,请稍后再试2
YFMB-BUG-009运费模板运费管理页面,不可以选择偶数行的数据1. 登录系统->进入运费模板页面 2. 点击偶数行的【复选框】当前【复选框】行被选中无法选中当前【复选框】行1
YFMB-BUG-010运费模板运费管理页面,【批量删除】按钮,没有图标,不美观1. 登录系统->进入运费模板页面 2. 查看【批量删除】按钮建议【批量删除】按钮里添加【垃圾桶】图标,更美观【批量删除】按钮,里面没有图标,不够美观2
YFMB-BUG-011运费模板运费管理页面,在新增完成 运费模板时,最新的数据不是最上面1. 登录系统->进入运费模板页面 2. 正确添加一条运费模板 3. 查看位置最新的数据将被添加在最前面最新的数据不是放置在最前面1
XJYFMB-BUG-001新增运费模板新增运费模板页面,添加可以添加重复的数据1. 登录系统>进入运费模板页面>点击【新增】 2. 输入页面中已有的【模板名称】 3. 点击【确定】提示:模板名称已存在,请重新输入添加成功1
XJYFMB-BUG-002新增运费模板新增运费模板页面,【首件(个)】,可以输入负数1. 登录系统>进入运费模板页面>点击【新增】 2. 输入【首件(个)】(负数) 3. 其他项输入正确 4. 点击【确定】提示:请输入正确的首件(个)没有提示,且可以成功保存1
XJYFMB-BUG-003新增运费模板新增运费模板页面,【续件(个)】,可以输入小数1. 登录系统>进入运费模板页面>点击【新增】 2. 输入【续(个)】(小数) 3. 其他项输入正确 4. 点击【确定】提示:请输入正确的续件(个)没有提示,且可以成功保存1
XJYFMB-BUG-004新增运费模板新增运费模板页面,点击【按体积】单选框时,无法选择1. 登录系统>进入运费模板页面>点击【新增】 2.【收费方式】点击【按体积】单选框成功进入到相应页面系统无反应1
XJYFMB-BUG-005新增运费模板新增运费模板页面,在指定条件包裹时,输入框没有做检验,可以输入任何值1. 登录系统>进入运费模板页面>点击【新增】 2. 勾选【指定条件包裹】复选框 3. 勾选【满件/重量/体积且满金额包邮】 4. 输入框输入(英文特殊字符及数字和空格组合)输入框进行输入数值的校验输入框没有做任何校验1

题目3:单元测试

题目描述

​ 请使用“基本路径法”为被测源代码 GroupPurchase 类中的submitOrder()方法设计单元测试用例,并在GroupPurchaseTest类中完成单元测试代码。

【源代码功能】
某团购网站开展团购活动,用户参团下单时,如果满足成团规则即可按折扣单价成交。成团规则如下:

  • 参团时间在该团购的活动时间段内:14:00:00~14:30:00;若不满足该条件,系统提示“当前时问没有正在进行中的活动”;
  • 当前参团用户为“已登录”状态。若不满足该条件,系统提示“请登录”
  • 该团购当前的参团用户不少于3个且团购总量不少于100。若不满足该条件,系统提示“参团用户少于3家或团购数量不足100,暂未成团”

​ 若以上三个成团规则全部符合,则该团购的所有参团用户可按相应的折扣单价成交,具体折扣标准如下:

  • 团购总量小于等于200时,成交单价打九五折;

  • 团购总量大于200日小于等于500时,成交单价打九折。

  • 团购总量大于500 时,成交单价打八折。

工具操作
第1步:请继续在 eclipse 中编写 Java 单元测试代码。
注意:如果您单元测试使用的是Python代码,请查看Python的单元测试题目,并在 eclipse 工具中也切换到 Python 工程中编写代码,并注意提交正确的答案。
第2步:打开题目压缩包中的【学生源码包】→【unit】文件夹,查看如下2个文件:

  • 被测源代码文件 GroupPurchase.java

  • 测试代码文件 GroupPurchaseTest.java

第3步:请把上述2文件复制到Eclipse 工具中对应的位置,然后开始填写单元测试代码。文件位置如下图所示:

在这里插入图片描述

单元测试答案代码

package cn.lanqiao.unit;import static org.junit.Assert.assertEquals;import org.junit.Before;
import org.junit.Test;import cn.lanqiao.GroupPurchse;public class GroupPurchseTest {static GroupPurchse pruchase;@Beforepublic void initGroupPurchseTest() {pruchase = new GroupPurchse();}@Testpublic void test01() {//TODOassertEquals("当前时间没有正在进行中的活动", pruchase.submitOrder("13:30:00", true, 3, 100, 300));}@Testpublic void test02() {//TODOassertEquals("当前时间没有正在进行中的活动", pruchase.submitOrder("15:30:00", true, 3, 100, 300));}@Testpublic void test03() {//TODOassertEquals("请登录", pruchase.submitOrder("14:15:00", false, 3, 100, 300));}@Testpublic void test04() {//TODOassertEquals("参团用户少于3家或团购数量不足100,暂未成团", pruchase.submitOrder("14:10:00", true, 2, 0, 50));}@Testpublic void test05() {//TODOassertEquals("参团用户少于3家或团购数量不足100,暂未成团", pruchase.submitOrder("14:15:00", true, 4, 80, 300));}@Testpublic void test06() {//TODOassertEquals("成交单价打九五折", pruchase.submitOrder("14:15:00", true, 4, 120, 120));}@Testpublic void test07() {//TODOassertEquals("成交单价打九折。", pruchase.submitOrder("14:15:00", true, 4, 300, 500));}@Testpublic void test08() {//TODOassertEquals("成交单价打八折。", pruchase.submitOrder("14:15:00", true, 4, 600, 300));}}

题目4:自动化测试 python

​ 这里是使用python做的,题目描述的虽然是java,但大差不差

题目描述

​ 请使用 Java 编程语言,结合 PO 模式(Page Object Model,页面对象模型)思想,使用 Selenium 自动化测试工具补全如下4个类文件中 TODO 处缺失的代码:

  • Pagel:LognPage.java,“登录”页面
  • Page2:FreightPage.java,“运费模板”页面
  • Page3:AddFreightPage.java,“新增运费模板”页面

WebCaseTest.java:测试用例代码文件请按照用例步骤,在测试用例 WebCaseTest.java文件中通过调用3个Page 类中的方法完成自动化测试代码。

具体的操作步骤如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评分标准

  • 3个page 类中方法的实现,每个占1.5分,共计27分。

  • WebCaseTest类文件中分别从规范、测试用例覆盖度、断言结果3个方面进行判分,共 23 分。

    • 规范(共4分):未合理使用等待方法,扣4分。
    • 测试用例步骤(共16分):每个步骤1分,共16分。
    • 测试用例断言(共3分):每个断言1分,共3处断言,断言不正确或者不通过,则按照已通过的断言个数给分。
  • 如整个项目代码编译失败,则扣除Page页中方法分和测试用例分数,但不影响规范得分。

代码实现

​ login_page.py

from selenium.webdriver.common.by import By
"""* Page1-【登录】页面* * * 1. 输入【用户名】* 2. 输入【密码】* 3. 点击【登录】按钮
"""class LoginPage:def __init__(self, driver):self.driver = driverdef input_login_name(self, loginName):# TODO 实现 【登录名称】输入的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/div[2]/form/div[1]/div/div[1]/input').send_keys(loginName)def input_login_password(self, password):# TODO 实现【密码】输入的 方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/div[2]/form/div[2]/div/div/input').send_keys(password)def click_login_button(self):# TODO 实现 【登录】按钮的点击方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/div[2]/form/div[3]/div/div/input').click()

​ fright_page.py

from selenium.webdriver.common.by import By
"""* * * * 1. 获取登录成功后用户名文本方法2. 点击【门店管理】菜单的方法3. 点击【运费模板】菜单的方法4. 点击【+新增】按钮的方法5. 搜索项输入模板名称方法6. 点击【搜索】按钮的方法7. 点击列表【删除】按钮的方法8. 点击弹框【确定】按钮的方法9. 获取分页文本方法"""class FrightPage:def __init__(self, driver):self.driver = driverdef get_username_text(self):# TODO 实现 获取登录成功后用户名文本方法return self.driver.find_element(By.XPATH, '/html/body/div[1]/nav/div[2]/ul[2]/li/div/span').textdef click_store_meun(self):# TODO 实现 点击【门店管理】菜单的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/aside/div/ul/li[3]/div').click()def click_model_meun(self):# TODO 实现 点击【运费模板】菜单的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/aside/div/ul/li[3]/ul/li[4]').click()def click_add_button(self):# TODO 实现 点击【+新增】按钮的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div/div[2]/div/div[1]/div[1]/button[1]').click()def input_freight_name(self, name):# TODO 实现 搜索项输入模板名称方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div/div[1]/div/div/form/div/div/div/div/div[2]/div/div/div[1]/div/div/div/div/input').send_keys(name)def click_search_button(self):# TODO 点击【搜索】按钮的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div/div[1]/div/div/form/div/div/div/div/div[2]/div/div/div[2]/div/div/button').click()def click_delete_button(self):# TODO 点击列表【删除】按钮的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div/div[2]/div/form/div/div[5]/div[2]/table/tbody/tr/td/div/button[2]').click()def get_page_number_text(self):# TODO 获取分页文本方法return self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div/div[2]/div/div[2]/div/span[1]').textdef click_confirm_button(self):# TODO 点击弹框【确定】按钮的方法self.driver.find_element(By.XPATH, '/html/body/div[3]/div/div[3]/button[2]').click()

​ add_fright_page.py

from selenium.webdriver.common.by import By
"""* * * * 1. 输入模板名称【运费模板】2. 输入首件(个)【1】方法3. 输入运费(元)【2】方法4. 输入续件(个)【3】方法5. 输入续费(元)【4】方法6. 点击【确定】按钮方法"""class AddFrightPage:def __init__(self, driver):self.driver = driverdef input_freight_name(self, name):# TODO 实现 输入模板名称【运费模板】的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div[2]/div/div[2]/form/div[1]/div/div/input').send_keys(name)def input_firstArticle(self, num):# TODO 实现 输入输入首件(个)【1】的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div[2]/div/div[2]/form/div[4]/div[3]/table/tbody/tr/td[2]/div/div/div/div/input').send_keys(num )     def input_freight(self, money):# TODO 实现 输入运费(元)【2】的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div[2]/div/div[2]/form/div[4]/div[3]/table/tbody/tr/td[3]/div/div/div/div/input').send_keys(money)def input_contiunation(self, individual):# TODO 实现 输入续件(个)【3】的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div[2]/div/div[2]/form/div[4]/div[3]/table/tbody/tr/td[4]/div/div/div/div/input').send_keys(individual)def input_renew(self, money):# TODO 实现 输入续费(元)【4】的方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div[2]/div/div[2]/form/div[4]/div[3]/table/tbody/tr/td[5]/div/div/div/div/input').send_keys(money)def click_ok_button(self):# TODO 实现 点击【确定】按钮方法self.driver.find_element(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div[2]/div/div/div/div[2]/div/div[3]/span/button[2]').click()    

​ web_case_test.py

import unittest
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from cn.lanqiao.web.login_page import LoginPage
from cn.lanqiao.web.freight_page import FrightPage
from cn.lanqiao.web.add_freight_page import AddFrightPage
from time import sleepclass TestWebCase(unittest.TestCase):# 浏览器初始化def setUp(self):# 不要改动此处 driver 位置gecko_path = "C:\\LanQiaoTest\\project\\PythonLanqiaoTest\\driver\\geckodriver.exe"options = webdriver.FirefoxOptions()options.set_preference('security.fileuri.strict_origin_policy', False)options.set_preference('security.fileuri.origin_policy', '*')self.driver = webdriver.Firefox(service=Service(gecko_path),options=options)self.driver.implicitly_wait(10)self.driver.maximize_window()# TODO 打开被测系统的网址self.driver.get("http://localhost:8090/#/login")# 请在此方法中续写测试用例def test_browser(self):# 创建 login_page 对象login_page = LoginPage(self.driver)# 创建 freight_page 对象freight_page = FrightPage(self.driver)# 创建 add_freight_page 对象add_freight_page = AddFrightPage(self.driver)# TODO 请调用以上3个实例化对象中的方法完成测试用例代码(具体请参照题目中的用例步骤描述和截图)login_page.input_login_name('admin')login_page.input_login_password('LQSTesting@2004')login_page.click_login_button()sleep(1)username = freight_page.get_username_text()self.assertEqual('admin', username)freight_page.click_store_meun()freight_page.click_model_meun()freight_page.click_add_button()sleep(1)add_freight_page.input_freight_name('运费模板')add_freight_page.input_firstArticle('1')add_freight_page.input_freight('2')add_freight_page.input_contiunation('3')add_freight_page.input_renew('4')add_freight_page.click_ok_button()sleep(5)page_num = freight_page.get_page_number_text()self.assertEqual('共 4 条', page_num)freight_page.input_freight_name('运费模板')freight_page.click_search_button()freight_page.click_delete_button()freight_page.click_confirm_button()sleep(5)page_num_2 = freight_page.get_page_number_text()        self.assertEqual('共 3 条', page_num_2)        def tearDown(self):sleep(3)self.driver.quit()

http://www.ppmy.cn/embedded/5512.html

相关文章

k8s 部署 kube-prometheus监控

一、Prometheus监控部署 1、下载部署文件 # 使用此链接下载后解压即可 wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/heads/release-0.13.zip2、根据k8s集群版本获取不同的kube-prometheus版本部署 https://github.com/prometheus-operator/k…

1. A/B Test

文章目录 1、什么是A/B Testing ?2、A/B Testing 的用途?3、如何设计 A/B Testing?4、如何分析实验数据,得出结论?5、如何发行新产品并持续监测?学习链接 1、什么是A/B Testing ? A/B Testing …

Vue 指令、计算属性、侦听器

目录 指令 指令修饰符 按键修饰符 ​编辑 v-model修饰符 事件修饰符 v-bind对于样式操作的增强 操作class 对象 数组 操作style v-model应用于其他表单元素 computed计算属性 概念 基础语法 ​编辑 计算属性vs方法 computed计算属性 作用 语法 缓存特性 m…

精通MongoDB聚合操作API:深入探索高级技巧与实践

MongoDB 聚合操作API提供了强大的数据处理能力,能够对数据进行筛选、变换、分组、统计等复杂操作。本文介绍了MongoDB的基本用法和高级用法,高级用法涵盖了setWindowFields、merge、facet、expr、accumulator窗口函数、结果合并、多面聚合、查询表达式在…

Python 操作 json 数据

在Python中,操作JSON数据主要包括序列化(将Python对象转换为JSON格式)和反序列化(将JSON字符串转换回Python对象)。 以下是使用Python内置的json模块进行这些操作的基本示例: JSON 序列化 (Serialization…

从入门到精通C++之类和对象(续)

目录 初始化列表构造函数?拷贝构造?浅谈explicit关键字友元 内部类static成员总结 初始化列表 引入初始化列表:简化代码,提高效率 在编程中,初始化列表是一种用于在创建对象时初始化成员变量的快捷方式。通过初始化列…

智能生活新体验:小米香薰加湿器技术解码

在现代家居生活中,科技与舒适性日益交织,智能家居产品成为提升生活品质的重要工具。小米香薰加湿器作为一款集科技与生活美学于一体的产品,其独特的设计和多功能性受到了广泛欢迎。今天,我们就来详细拆解这款融合了科技与香薰元素…

C语言第六章之内存分布,内存管理

内存分布 C代码编译过程 预处理 宏定义展开、头文件展开、条件编译,这里并不会检查语法 编译 检查语法,将预处理后文件编译生成汇编文件 汇编 将汇编文件生成目标文件(二进制文件) 链接 将目标文件链接为可执行程序 进程的内存分布 程序运行起来(…