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

EX_25/2/24

写一个三角形类,拥有私有成员 a,b,c 三条边 写好构造函数初始化 abc 以及 abc 的set get 接口 再写一个等腰三角形类,继承自三角形类 1:写好构造函数,初始化三条边 2:要求无论如何,等腰三角形类对象,总是等腰的 再写一个等边三角形类,继承自等腰三角形类 1:写好构造函数,初始化三条边 2:要求无论如何,等腰三角形类对象,总是等边

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>

using namespace std;                 

class ABC
{
private:
	int a;
	int b;
	int c;
public:
	ABC(int a=0,int b=0,int c=0)
		:a(a),b(b),c(c)
	{}
	void seta(int l)
	{
		a=l;
	}
	void setb(int l)
	{
		b=l;
	}
	void setc(int l)
	{
		c=l;
	}
	int geta()
	{
		return a;
	}
	int getb()
	{
		return b;
	}
	int getc()
	{
		return c;
	}
};

class ABB:public ABC
{
public:
	ABB(int a=0,int bb=0)
		:ABC(a,bb,bb)
	{}
	void seta(int a)
	{
		ABC::seta(a);
		ABC::setb(a);
	}
	void setb(int b)
	{
		ABC::seta(b);
		ABC::setb(b);
	}
};
class AAA:public ABC
{
	AAA(int aaa=0)
		:ABC(aaa,aaa,aaa)
	{}
	void seta(int a)
	{
		ABC::seta(a);
		ABC::setb(a);
		ABC::setc(a);
	}
};
int main(int argc,const char** argv)
{
	ABB d;
	d.seta(4);
	d.setb(5);
	d.setc(6);

	AAA e;
	e.seta(7);
	return 0;
}

编写一个长方形类, 私有成员 a,b 构造函数初始化 set get 接口 编写一个正方形类,继承自长方形类 构造函数初始化 无论如何,正方形类对象总是正方形的

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>

using namespace std;                 

class AABB{
private:
    int a;
    int b;
public:
    AABB(int a=0,int b=0):a(a),b(b){};
    void setA(int l){a = l;}
    void setB(int l){b = l;}
    int getA(){return a;}
    int getB(){return b;}
};

class AA:public AABB{
public:
    AA() : AABB(0,0){}

    AA(int a)
        :AABB(a,a)
    {}

    void setA(int a){
        AABB::setA(a);
        AABB::setB(a);
    }

    void setB(int b){
        AABB::setA(b);
        AABB::setB(b);
    }
};


int main(int argc,const char** argv){
    AA a1;
    a1.setA(3);
    a1.setB(4);

}

封装消息队列 class Msg{ key_t key int id; int channel } 实现以下功能 Msg m("文件名") m[1].send("数据"),将数据发送到1号频道中 string str = m[1].recv(int size) 从1号频道中读取消息,并且返回 把 send 改成 operator<< ,recv 改成 operator>> 实现效果: m[1] << "helloworld" 将 "helloworld" 写入消息队列的1号频道中 m[1] >> str 读取消息队列中1频道中的消息,存入 str 中

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
#include <sys/ipc.h>
#include <sys/msg.h>

using namespace std;

class Msg {
private:
    key_t key;
    int id;
    int channel;
    struct msgbuf {
        long channel;
        char text[512];
    };

public:
    Msg(const string& filename = "") {
        key = ftok(filename.data(), 1);
        id = msgget(key, IPC_CREAT | 0666);
    }

    ~Msg() {
        msgctl(id, IPC_RMID, 0);
    }

    void send(const string& str) {
        msgbuf buf = {0};
        strcpy(buf.text, str.data());
        buf.channel = channel;
        msgsnd(id, &buf, strlen(buf.text) + 1, 0);
    }

    string recv(int size = 512) {
        msgbuf buf = {0};
        msgrcv(id, &buf, size, channel, 0);
        string str = buf.text;
        return str;
    }

    friend Msg& operator<<(Msg& msg, const string& str);
    friend Msg& operator>>(Msg& msg, string& str);

    Msg& operator[](int channel) {
        this->channel = channel;
        return *this;
    }
};

Msg& operator<<(Msg& msg, const string& str) {
    msg.send(str);
    return msg;
}

Msg& operator>>(Msg& msg, string& str) {
    str = msg.recv();
    return msg;
}

int main(int argc, const char** argv) {

    return 0;
}

封装信号灯集 class Sem{ key_t key int id; int index } 实现以下功能 Sem s(参数x,参数y):创建信号灯集,信号灯集中存在 x 个信号量,并且将所有信号量初始化为 y s[1].init(10):手动初始化信号灯集中的第1个信号量,初始化成 10 s[1] + 1 让信号灯集中的第1个信号量的值 +1 s[1].operator+(1) s[1] - 1 让信号灯集中的第1个信号量的值 -1 追加 operator ++ 功能,即解锁一次 以及 operator-- 功能, 即上锁一次

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
#include <sys/ipc.h>
#include <sys/sem.h>

using namespace std;

class Sem {
private:
    key_t key;
    int id;
    int index;

public:
    Sem(const string& filename = "", int n, int val) {
        key = ftok(filename.data(), 1);
        id = semget(key, n, IPC_CREAT | 0666);
        for (int i = 0; i < n; i++) {
            semctl(id, i, SETVAL, val);
        }
    }

    ~Sem() {
        semctl(id, 0, IPC_RMID);
    }

    friend Sem& operator+(const Sem& l, int val);
    friend Sem& operator-(const Sem& l, int val);
    friend Sem& operator++(Sem& l);
    friend Sem& operator--(Sem& l);
    friend Sem& operator[](Sem& l, int index);
};

Sem& operator+(Sem& l, int val) {
    sembuf buf = {0};
    buf.sem_num = l.index;
    buf.sem_op = abs(val);
    buf.sem_flg = SEM_UNDO;
    semop(l.id, &buf, 1);
    return l;
}

Sem& operator-(Sem& l, int val) {
    sembuf buf = {0};
    buf.sem_num = l.index;
    buf.sem_op = -abs(val);
    buf.sem_flg = SEM_UNDO;
    semop(l.id, &buf, 1);
    return l;
}

Sem& operator++(Sem& l) {
    sembuf buf = {0};
    buf.sem_num = l.index;
    buf.sem_op = 1;
    buf.sem_flg = SEM_UNDO;
    semop(l.id, &buf, 1);
    return l;
}

Sem& operator--(Sem& l) {
    sembuf buf = {0};
    buf.sem_num = l.index;
    buf.sem_op = -1;
    buf.sem_flg = SEM_UNDO;
    semop(l.id, &buf, 1);
    return l;
}
Sem& operator[](const Sem& l,int index){
	l.index = index;
	return l;
}
int main(int argc, const char** argv) {
   
    return 0;
}

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

相关文章:

  • 【ISP】畸变校正 LDC
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_set_inherited_sockets
  • DeepSeek回答:AI时代Go语言学习路线
  • 神卓 S500 组网设备连接交换机的详细步骤
  • 从零开始玩转TensorFlow:小明的机器学习故事 6
  • 鸿蒙ArkTs如何实现pdf预览功能?
  • Spring 源码硬核解析系列专题(五):Spring Boot 自动装配的原理
  • MySQL 中表和视图的关系
  • React进阶之前端业务Hooks库(三)
  • 娛閑放鬆篇2
  • Jenkins 构建 Unity 打包 .apk 同时生成 .aab
  • 【C++】const关键字的作用及常见应用场景
  • 【UCB CS 61B SP24】Lecture 14 - Data Structures 1: Disjoint Sets学习笔记
  • Android AOSP系统裁记录
  • SV基础(一):System Verilog与Verilog核心区别详解
  • SQL笔记#集合运算
  • 事务的4个特性和4个隔离级别
  • DeepSeek开源周首日:发布大模型加速核心技术可变长度高效FlashMLA 加持H800算力解码性能狂飙升至3000GB/s
  • LabVIEW C编译支持工具库CCompileSupp.llb
  • android 新增native binder service 方式(三)
  • 系统思考:第五项修炼
  • 『obsidian』obsidian接入DeepSeek模型的完整说明
  • 神经网络 - 神经元
  • LangChain教程 - RAG - 支持的100种向量数据库
  • 九、数据治理架构流程
  • JSON 简介、语法、使用场景与 JavaScript 操作指南
  • 【时时三省】(C语言基础)常量和变量
  • 一文读懂:AIGC 在工业互联网产教融合实训平台的创新应用
  • 05-1基于vs2022的c语言笔记——运算符
  • sklearn中的决策树-分类树:实例-分类树在合成数据集上的表现