EX_25/2/24

news/2025/2/25 5:36:03

写一个三角形类,拥有私有成员 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.niftyadmin.cn/n/5865024.html

相关文章

echarts 环形图 指定区域从右侧中心点展开

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>ECharts 环形图不合理区域展示<…

Lua语言入门(自用)

全局与非全局 在lua语言当中没有被local表示的是全局变量 反之则是本地变量(仅仅作用在某个文件,函数,或者代码块) 下面是实例代码和运行结果 --hello.luaA 10;--这样就是全局变量,然后这个编译器如果是大写就是默认的全局变量 local b 3;--这样就是局部变量--reference.…

推送项目 之 解决冲突

文章目录 为什么会发生冲突&#xff1f;如何解决这些冲突&#xff1f;1. **查看冲突文件**2. **解决二进制文件冲突**3. **解决文本文件冲突**4. **标记冲突已解决**5. **完成合并**6. **推送更改** 注意事项总结 问题&#xff1a;我们在git pusll拉取远程仓库的代码到本地对比…

视频编解码技术-3: H.264和VP9压缩效率和编码时延

一、引言 在前作《H.264和VP9视频编码质量评估》中&#xff0c;我们通过PSNR、SSIM等指标分析了二者在固定码率下的质量差异。本文聚焦实时应用场景的核心矛盾&#xff1a;在相同主观质量下&#xff0c;如何权衡压缩效率与编码延迟&#xff1f; 为此&#xff0c;本文采用“恒…

SpringBoot源码解析(十一):准备应用上下文

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…

VMware 与 CentOS 安装指南

一、安装前的准备 硬件要求&#xff1a;确保你的计算机有足够的硬件资源。一般来说&#xff0c;至少需要 2GB 以上的内存&#xff0c;20GB 以上的硬盘空间&#xff0c;以及支持虚拟化技术的 CPU。 软件准备&#xff1a;准备好 VMware Workstation 的安装程序&#xff0c;可以…

【爬虫】request库

文章目录 发送请求响应对象响应数据的方式中文乱码问题响应对象的其他属性或方法 发送带参数的请求headers和查询参数 Requests——发送http请求&#xff0c;获取响应数据 首先&#xff0c;请确保&#xff1a; 已安装 RequestsRequests 是最新的 让我们从一些简单的示例开始…

GPIO最大输出速度

GPIO的输出速度因为实际情况斜坡的存在&#xff0c;加快GPIOD的输出速度会产生尖峰无法保持高电压和低电压。 将电压分为三种状态&#xff0c;低速&#xff0c;中速&#xff0c;高速&#xff0c;根据实际的情况选择。