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;
	
}
相关推荐
weixin_472339462 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
枯萎穿心攻击2 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
Eiceblue4 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
tan180°4 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
m0_555762904 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
浪裡遊5 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
彭祥.6 小时前
Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
c++·opencv·分类
lzb_kkk6 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼6 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
简佐义的博客7 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang