
cpp
#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;
struct xiaoxi{
long type;
char buf[1024];
};
class Msg{
private:
key_t key;
int msg_id;
struct xiaoxi text;
public:
Msg(){
key = ftok(".",200);
msg_id = msgget(key,IPC_CREAT | 0664);
//text.buf = new char[1024];
}
Msg& operator[](const long& type){
text.type = type;
return *this;
}
Msg& operator<<(const char* r){
strcpy(text.buf,r);
msgsnd(msg_id,&text,sizeof(text.buf)+1,0);
return *this;
}
Msg& operator>>(char* r){
msgrcv(msg_id,&text,sizeof(text.buf),text.type,0);
strcpy(r,text.buf);
return *this;
}
~Msg(){
msgctl(msg_id,IPC_RMID,NULL);
//delete [] text.buf;
}
};
int main(int argc,const char** argv)
{
Msg m;
char str[1024];
m[1] << "你好";
m[2] >> str;
return 0;
}

cpp
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
using namespace std;
class Employee{
private:
int price = 0;
public:
void addPrice(int salary = 0){
price += salary;
}
virtual void getsalaries() = 0;
void showsalaries(){
cout << "发放薪水:" << price << endl;
}
};
class Cleanner:public Employee{
private:
public:
void getsalaries(){
addPrice(5000);
}
};
class Coder:public Employee{
private:
public:
void getsalaries(){
addPrice(10000);
}
};
class Manger:public Employee{
private:
public:
void getsalaries(){
addPrice(15000);
}
};
class Boos{
private:
Employee* list[100];
int len = 0;
public:
void add_list(Employee* worker){
list[len] = worker;
len ++;
}
Boos& operator<<(Employee& r){
add_list(&r);
return *this;
}
void pay_salaries(){
for(int i=0;i<len;i++){
list[i]->getsalaries();
}
for(int i=0;i<len;i++){
list[i]->showsalaries();
}
}
};
int main(int argc,const char** argv)
{
Cleanner qj;
Coder dm;
Manger jl;
Coder dm2;
Boos lb;
lb << qj << dm << jl << dm2;
lb.pay_salaries();
return 0;
}

cpp
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
using namespace std;
class Color{
private:
public:
virtual void show(){
}
};
class Red:public Color{
private:
public:
void show(){
cout << "红色" << endl;
}
};
class Green:public Color{
private:
public:
void show(){
cout << "绿色" << endl;
}
};
class Blue:public Color{
private:
public:
void show(){
cout << "蓝色" << endl;
}
};
Color* operator+(Color& r,Color& l){
return new Color;
}
void shuchu_color(Color** queue){
for(int i=0;i<3;i++){
queue[i]->show();
}
}
int main(int argc,const char** argv)
{
Color color;
Red red;
Green green;
Blue blue;
Color* queue[7] = {&red,&green,&blue};
shuchu_color(queue);
return 0;
}