c++day4

作业

复制代码
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>

using namespace std;                 

class S{
private:
	int a;
	int b;
public:
	S(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 Z:public S
{
public:
	Z(int ab=0)
	:S(ab,ab)
	{}
	void setA(int a)
	{
		S::setA(a);
		S::setB(a);
	}
	void setB(int b)
	{
		S::setA(b);
		S::setB(b);
	}
};

int main(int argc,const char** argv)
{
	Z ab;
	ab.setA(3);
	ab.setB(4);
}
复制代码
#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 AAC:public ABC
{
public:
	AAC(int ab=0,int c=0)
		:ABC(ab,ab,c)
	{}

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

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

	void setC(int c)
	{
		ABC::setA(c);
		ABC::setB(c);
	}
};

class AAA:public AAC
{
public:
	AAA(int ab=0)
		:AAC(ab,ab)
	{}

	void setA(int a)
	{
		AAC::setA(a);
		AAC::ABC::setC(a);
	}
	
	void setB(int b)
	{
		AAC::setB(b);
		AAC::ABC::setC(b);
	}

	void setC(int c)
	{
		AAC::setC(c);
		AAC::ABC::setC(c);
	}
};

int main(int argc,const char** argv)
{
	AAC aac;
	aac.setA(4);
	aac.setB(5);
	aac.setC(6);

	AAA aaa;
	aaa.setA(5);
	aaa.setB(7);
	aaa.setC(13);
}
复制代码
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
#include <sys/types.h>
#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,str.length(),0);
	}
	string recv(int size=512){
		msgbuf buf = {0};
		msgrcv(id,&buf,size,channel,0);
		string str = buf.text;
		return str;
	}
	Msg& operator<<(const string& str)
	{
		send(str);
		return *this;
	}
	Msg& operator>>(string& str)
	{
		str = recv();
		return *this;
	}
	Msg& operator[](int channel);
};

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

int main(int argc,const char** argv){
	Msg m("./ipc");
	m[1] << "helloworld";
	string str;
	m[1] >> str;
	cout << str << endl;
}
复制代码
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>

using namespace std;                 

class Sem{
private:
	key_t key;
	int id;
	int index;
public:
	Sem(int x,int y)
	{
		key = ftok("./ipc",2);
		id = semget(key,x,IPC_CREAT | 0666);
		for(int i=0;i<x;i++)
		{
			semctl(id,i,SETVAL,y);
		}
	}

	void init(int y)
	{
		semctl(id,index,SETVAL,y);
	}

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

	Sem& operator+(int y)
	{
		struct sembuf buf = {0};
		buf.sem_num = index;
		buf.sem_op = abs(y);
		buf.sem_flg = SEM_UNDO;
		semop(id,&buf,1);
		return *this;
	}
	Sem& operator++()
	{
		return *this+1;
	}
	Sem& operator--()
	{
		return *this-1;
	}
	Sem& operator[](int y)
	{
		index = y;
		return *this;
	}

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

int main(int argc,const char** argv)
{
	Sem s(3,0);
	s[1].init(10);
	s[1] + 1;
	s[1] - 1;
	
}
相关推荐
lg_cool_30 分钟前
Python 代码打包
开发语言·python
木雷坞33 分钟前
PHP两项9.2分漏洞:Docker容器更新与版本核验教程
开发语言·docker·php
2601_9628857241 分钟前
如何用 Python 做 MACD 金叉全市场选股?
开发语言·python
FfHUCisI43 分钟前
无锁 Reactor 网络模型与 gnet / evio 架构拆解
服务器·开发语言·后端·golang
笨笨饿44 分钟前
#145 _Codex 三层故障详细排查与修复步骤
开发语言·人工智能·stm32·单片机·嵌入式硬件
心中有你02141 小时前
C 语言文件操作详解:从写入、追加到读取与定位的完整 实战
c语言·开发语言
小张成长计划..1 小时前
【Linux】26:线程互斥和同步
java·开发语言
阿里嘎多学长9 小时前
2026-10-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
布吉岛的石头10 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
小羊没烦恼!10 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php