C++ DAY4

作业

代码

class Data
{
private:int a;int b;
public://构造函数Data(int a=0,int b=0):a(a),b(b){}//set接口void setA(int index=0){a=index;}void setB(int index=0){b=index;}//get接口int getA(){return a;}int getB(){return b;}void show(){ cout <<"a = " << a << " , b = " << b << endl; }
};class Data2:public Data
{
public://构造函数Data2(int index=0):Data(index,index){}//set接口void setA(int index=0){ Data::setA(index); Data::setB(index); }void setB(int index=0){ Data::setA(index); Data::setB(index); }//get接口int getA(){return Data::getA();}int getB(){return Data::getB();}
};int main(int argc,const char** argv)
{Data data;data.setA(3);data.setB(4);data.show();Data2 data2;data2.setA(5);data2.setB(6);data2.show();return 0;
}

效果

作业

代码

class Data
{
private:int a;int b;int c;
public://构造函数Data(int a=0,int b=0,int c=0):a(a),b(b),c(c){}//set接口void setA(int index=0){a=index;}void setB(int index=0){b=index;}void setC(int index=0){c=index;}//get接口int getA(){return a;}int getB(){return b;}int getC(){return c;}void show(){ cout << a << " " << b << " " << c << endl; }
};class Data2:public Data
{
public://构造函数Data2(int index=0,int index2=0):Data(index,index,index2){}//set接口void setA(int index=0){ Data::setA(index); Data::setB(index); }void setB(int index=0){ Data::setA(index); Data::setB(index); }void setC(int index=0){ Data::setC(index); }//get接口int getA(){ return Data::getA(); }int getB(){ return Data::getA(); }int getC(){ return Data::getA(); }
};class Data3:public Data2
{
public://构造函数Data3(int index=0):Data2(index,index){}//set接口void setA(int index=0){ Data2::setA(index); Data2::setC(index); }void setB(int index=0){ Data2::setA(index); Data2::setC(index); }void setC(int index=0){ Data2::setA(index); Data2::setC(index); }//get接口int getA(){ return Data2::getA(); }int getB(){ return Data2::getA(); }int getC(){ return Data2::getA(); }
};int main(int argc,const char** argv)
{Data data;data.setA(3);data.setB(4);data.setC(5);data.show();Data2 data2;data2.setA(3);data2.setB(4);data2.setC(5);data2.show();Data3 data3;data3.setA(3);data3.setB(4);data3.setC(5);data3.show();return 0;
}

效果

作业

代码

仅需 在原本的类 中添加成员方法:

    // 重载<<Msg& operator<<(const char* index){send(index);return *this;}// 重载<<Msg& operator>>(string& buf){buf=read();return *this;}

效果

作业

代码

等待另一端释放信号量 并 拿走

class Sem
{
private:int index;     //记录信号灯集总数int index_op;     //将对那个下标操作key_t key;int id;
public:Sem(const int& num,const int& index_value):key(-1),id(-1),index(num),index_op(-1){//如果文件不存在,则创建,不打开open("IPC",O_EXCL|O_CREAT,0666);//生成密钥key=ftok("IPC",2);//获得idid=semget(key,num,IPC_CREAT|0666);//初始化for(int i=0;i<num;i++){//遍历所有下标 初始化为指定值 index2semctl(id,i,SETVAL,index_value);}}//手动设置指定下标的值void init(const int& index){semctl(id,index_op,SETVAL,index);}// 重载[]Sem& operator[](const int& index){//说明选中第 i 个index_op=index;return *this;}//重载 +Sem& operator+(const int& index){struct sembuf sop;sop.sem_num=index_op;		//选中下标sop.sem_op=index;			//解锁 index 次sop.sem_flg=SEM_UNDO;	    //自动销毁//执行依次上述设定的操作semop(id,&sop,1);return *this;}//重载 -Sem& operator-(const int& index){struct sembuf sop;sop.sem_num=index_op;		//选中下标sop.sem_op=-index;			//上锁 index 次sop.sem_flg=SEM_UNDO;	    //自动销毁//执行依次上述设定的操作semop(id,&sop,1);return *this;}// friend Sem& operator++(Sem& sem);//后自增Sem operator++(int){Sem temp=*this;*this+1;return temp;}// 前自增Sem& operator++(){ *this+1; return *this; }// 后--Sem operator--(int){Sem temp=*this;*this-1;return temp;}// 前--Sem& operator--(){ *this-1; return *this; }
};int main(int argc,const char** argv)
{//创建信号灯集Sem m(5,0);//测试 手动设定 是否正常m[1].init(1);//测试 ++ 是否正常m[1]++;string str[5]={"你","好","世","界"};//测试 -- 是否正常for(int i=0;i<4;i++){--m[1];                 //如果 成功拿走信号量cout<<str[i]<<endl;     //那么 输出内容}//正常应该输出 "你" "好" 剩下部分由,另一个程序释放信号量后 显示return 0;
}

信号量释放

int main(int argc,const char** argv)
{   while(1){//如果从终端吃到回车while(getchar()!=10);//就向 [频道1] 释放一个信号量m[1]--;//如果从终端吃到回车while(getchar()!=10);//就向 [频道2] 释放一个信号量m[2]--;}return 0;
}

效果

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 实现抖音风格底部导航栏

在移动应用开发中&#xff0c;良好的导航设计对用户体验至关重要。抖音作为一款现象级应用&#xff0c;其底部导航设计简洁直观&#xff0c;极具吸引力。本文将详细介绍如何使用 Flutter 开发一个类似抖音风格的底部导航栏&#xff0c;帮助开发者打造兼具美观与实用的导航界面。…

深入剖析:基于红黑树实现自定义 map 和 set 容器

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 在 C 标准模板库&#xff08;STL&#xff09;的大家庭里&#xff0c;map和set可是超级重要的关联容器成员呢&#x1f60e;&#x…

前端面试题之HTML篇

1.src和href的区别 src用于替换当前元素&#xff0c;href用于在当前文档和引用资源之间确立联系。 src可用于img、input、style、script、iframe---同步加载执行 href可用于link、a---异步 1.用途不同 src 用于引入外部资源&#xff0c;通常是图像、视频、JavaScript 文件等&am…

硬件工程师入门教程

1.欧姆定律 测电压并联使用万用表测电流串联使用万用表&#xff0c;红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…

01背包之---应用篇

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、01背包之---背包是否能被装满&#xff1f;例题1.分析题意例题2.分析题意 二、01背包之---装满背包有多少种组合?例题1.分析题意 三、01背包之---容量为N的…

DeepSeek赋能智慧文旅:新一代解决方案,重构文旅发展的底层逻辑

DeepSeek作为一款前沿的人工智能大模型&#xff0c;凭借其强大的多模态理解、知识推理和内容生成能力&#xff0c;正在重构文旅产业的发展逻辑&#xff0c;推动行业从传统的经验驱动向数据驱动、从人力密集型向智能协同型转变。 一、智能服务重构&#xff1a;打造全域感知的智…

uniapp修改picker-view样式

解决问题&#xff1a; 1.选中文案样式&#xff0c;比如字体颜色 2.修改分割线颜色 3.多列时&#xff0c;修改两边间距让其平分 展示效果&#xff1a; 代码如下 <template><u-popup :show"showPicker" :safeAreaInsetBottom"false" close&quo…

开源嵌入式实时操作系统uC/OS-II介绍

一、uC/OS-II的诞生&#xff1a;从开源实验到行业标杆 背景与起源 uC/OS-II&#xff08;Micro-Controller Operating System Version II&#xff09;诞生于1992年&#xff0c;由嵌入式系统先驱Jean J. Labrosse开发。其前身uC/OS&#xff08;1991年&#xff09;最初作为教学工…

8.spring对logback的支持

文章目录 一、入口二、源码解析LoggingApplicationListener 三、其它支持四、总结 本节以logback为背景介绍的 一、入口 gav: org.springframework.boot:spring-boot:3.3.4 spring.factories文件中有如下两个配置 org.springframework.boot.logging.LoggingSystemFactory\ …

OpenHarmony分布式数据管理子系统

OpenHarmony分布式数据管理子系统 简介 目录 组件说明 分布式数据对象数据共享分布式数据服务Key-Value数据库首选项关系型数据库标准数据化通路 相关仓 简介 子系统介绍 分布式数据管理子系统支持单设备的各种结构化数据的持久化&#xff0c;以及跨设备之间数据的同步、…

智慧后勤的消防管理:豪越科技为安全护航

智慧后勤消防管理难题大揭秘&#xff01; 在智慧后勤发展得如火如荼的当下&#xff0c;消防管理却暗藏诸多难题。传统模式下&#xff0c;消防设施分布得那叫一个散&#xff0c;就像一盘散沙&#xff0c;管理起来超费劲。人工巡检不仅效率低&#xff0c;还容易遗漏&#xff0c;不…

python轻量级框架-flask

flask简述 Flask 是 Python 生态圈中一个基于 Python 的Web 框架。其轻量、模块化和易于扩展的特点导致其被广泛使用&#xff0c;适合快速开发 Web 应用以及构建小型到中型项目。它提供了开发 Web 应用最基础的工具和组件。之所以称为微框架&#xff0c;是因为它与一些大型 We…

政安晨【零基础玩转各类开源AI项目】DeepSeek 多模态大模型Janus-Pro-7B,本地部署!支持图像识别和图像生成

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 目录 下载项目 创建虚拟环境 安装项目依赖 安装 Gradio&#xff08;UI&#xff09; 运…

在 Mac mini M2 上本地部署 DeepSeek-R1:14B:使用 Ollama 和 Chatbox 的完整指南

随着人工智能技术的飞速发展&#xff0c;本地部署大型语言模型&#xff08;LLM&#xff09;已成为许多技术爱好者的热门选择。本地部署不仅能够保护隐私&#xff0c;还能提供更灵活的使用体验。本文将详细介绍如何在 Mac mini M2&#xff08;24GB 内存&#xff09;上部署 DeepS…

【Godot4.3】基于绘图函数的矢量蒙版效果与UV换算

概述 在设计圆角容器时突发奇想&#xff1a; 将圆角矩形的每个顶点坐标除以对应圆角矩形所在Rect2的size&#xff0c;就得到了顶点对应的UV坐标。然后使用draw_colored_polygon&#xff0c;便可以做到用图片填充圆角矩形的效果。而且这种计算的效果就是图片随着其填充的图像缩…

51单片机-AT24CXX存储器工作原理

1、AT24CXX存储器工作原理 1.1、特点&#xff1a; 与400KHz&#xff0c;I2C总线兼容1.8到6.0伏工作电压范围低功耗CMOS技术写保护功能当WP为高电平时进入写保护状态页写缓冲器自定时擦写周期100万次编程/擦除周期可保存数据100年8脚DIP SOIC或TSSOP封装温度范围商业级和工业级…

Linux网络 网络层

IP 协议 协议头格式 4 位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4. 4 位头部长度(header length): IP 头部的长度是多少个 32bit, 也就是 4 字节&#xff0c;4bit 表示最大的数字是 15, 因此 IP 头部最大长度是 60 字节. 8 位服务类型(Type Of Service):…

Unity百游修炼(1)——FootBall详细制作全流程

一、引言 游玩测试&#xff1a; Football 游玩测试 1.项目背景与动机 背景&#xff1a;在学习 Unity 的过程中&#xff0c;希望通过实际项目来巩固所学知识&#xff0c;同时出于对休闲小游戏的喜爱&#xff0c;决定开发一款简单有趣的小游戏加深自己的所学知识点。 动机&#…

C语言(13)------------>do-while循环

1.do-while循环的语法 我们知道C语言有三大结构&#xff0c;顺序、选择、循环。我们可以使用while循环、for循环、do-while循环实现循环结构。之前的博客中提及到了前两者的技术实现。可以参考&#xff1a; C语言&#xff08;11&#xff09;-------------&#xff1e;while循…

【1】VS Code 新建上位机项目---C#基础语法

VS Code 新建上位机项目---C#基础语法 1 基本概念1.1 准备工具1.2 新建项目2 C#编程基础2.1 命名空间和类2.2 数据类型2.3 控制台输入输出2.3.1 输入输出: write 与 read2.3.2 格式化 : string.Foramt() 与 $2.3.3 赋值与运算2.4 类型转换2.4.1 数值类型之间的转换:(int)2.4…