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

企业网站建设cms系统乔拓云智能建站

企业网站建设cms系统,乔拓云智能建站,抖音网站,wordpress产品主题一、练习1 编写一个长方形类; 私有成员: a, b 构造函数初始化; set、get 接口; 编写一个正方形类,继承自长方形类; 构造函数初始化; 无论如何,正方形类对象总是正方形的;…

一、练习1

        编写一个长方形类;

        私有成员: a, b

        构造函数初始化;

        set、get 接口;

        编写一个正方形类,继承自长方形类;

        构造函数初始化;

        无论如何,正方形类对象总是正方形的;

【代码】:

#include <iostream>using namespace std;class ABAB{
private:int a;int b;
public:ABAB(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 AABB:public ABAB{
public:AABB(int a=0, int b=0):ABAB(a, b){}void setA(int a){ABAB::setA(a);ABAB::setB(a);}void setB(int b){ABAB::setA(b);ABAB::setB(b);}
};int main()
{AABB aabb;aabb.setA(5);aabb.setB(5);cout << "a=" << aabb.getA() << endl;cout << "b=" << aabb.getB() << endl;return 0;
}

二、练习2

        写一个三角形类,拥有私有成员;

                a,b,c 三条边

        写好构造函数初始化 abc 以及 abc 的set、get 接口;

        再写一个等腰三角形类,继承自三角形类:

                1、写好构造函数,初始化三条边;

                2、要求无论如何,等腰三角形类对象,总是等腰的;

        再写一个等边三角形类,继承自等腰三角形类;

                1、写好构造函数,初始化三条边;

                2、要求无论如何,等腰三角形类对象,总是等边;

【代码】:

#include <iostream>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:AAB(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);}
};class AAA:public AAC{
public:AAA(int ab=0, int ac=0, int bc=0):AAC(ab, ac, bc){}void setA(int a){AAC::setA(a);AAC::setB(a);AAC::setC(a);}void setB(int b){AAC::setA(b);AAC::setB(b);AAC::setC(b);}void setC(int c){AAC::setA(c);AAC::setB(c);AAC::setC(c);}
};int main()
{AAA aaa;aaa.setA(5);aaa.setB(5);aaa.setC(5);cout << "a=" << aaa.getA() << endl;cout << "b=" << aaa.getB() << endl;cout << "c=" << aaa.getC() << endl;return 0;
}

三、练习3

        封装消息队列

        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 <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); // 生成 keyid = msgget(key, IPC_CREAT | 0666); // 创建消息队列if (id == -1) {perror("msgget");exit(EXIT_FAILURE);}}// 析构函数~Msg() {msgctl(id, IPC_RMID, 0); // 删除消息队列}// 重载 << 运算符,用于发送消息Msg& operator<<(const string& str) {msgbuf buf = {0};strncpy(buf.text, str.data(), sizeof(buf.text) - 1); // 复制消息内容buf.channel = channel; // 设置消息频道if (msgsnd(id, &buf, strlen(buf.text) + 1, 0) == -1) { // 发送消息perror("msgsnd");}return *this;}// 重载 >> 运算符,用于接收消息Msg& operator>>(string& str) {msgbuf buf = {0};if (msgrcv(id, &buf, sizeof(buf.text), channel, 0) == -1) { // 接收消息perror("msgrcv");}str = buf.text; // 将消息内容存入 strreturn *this;}// 重载 [] 运算符,用于设置频道Msg& operator[](int channel) {this->channel = channel; // 设置当前频道return *this;}
};int main() {Msg m; // 创建消息队列对象// 向 1 号频道发送消息m[1] << "helloworld";// 从 1 号频道接收消息string str;m[1] >> str;cout << "Received message: " << str << endl;return 0;
}

四、练习4

        封装信号灯集

        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(), 'R');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);}Sem& operator++() { // 前置++sembuf buf = {};buf.sem_num = index;buf.sem_op = 1;buf.sem_flg = SEM_UNDO;semop(id, &buf, 1);return *this;}Sem& operator--() { // 前置--sembuf buf = {};buf.sem_num = index;buf.sem_op = -1;buf.sem_flg = SEM_UNDO;semop(id, &buf, 1);return *this;}friend Sem& operator+(const Sem& l, int val);friend Sem& operator-(const Sem& l, int val);friend Sem& operator[](const Sem& l, int index);
};Sem& operator+(const Sem& l, int val) {sembuf buf = {};buf.sem_num = l.index;buf.sem_op = abs(val);buf.sem_flg = SEM_UNDO;semop(l.id, &buf, 1);return const_cast<Sem&>(l);
}Sem& operator-(const Sem& l, int val) {sembuf buf = {};buf.sem_num = l.index;buf.sem_op = -abs(val);buf.sem_flg = SEM_UNDO;semop(l.id, &buf, 1);return const_cast<Sem&>(l);
}Sem& operator[](const Sem& l, int index) {const_cast<Sem&>(l).index = index;return const_cast<Sem&>(l);
}int main(int argc, const char** argv) {Sem sem("semfile", 1, 1); // 创建一个信号量,初始值为1// 测试 operator++cout << "Unlocking semaphore..." << endl;++sem;cout << "Semaphore unlocked." << endl;// 测试 operator--cout << "Locking semaphore..." << endl;--sem;cout << "Semaphore locked." << endl;return 0;
}

http://www.dtcms.com/wzjs/294966.html

相关文章:

  • 外贸建站主机全网推广怎么做
  • 沙朗做网站公司个人网页制作完整教程
  • 东莞网站建设需要多少钱seo的中文名是什么
  • 网站手机端生成小程序开发流程详细
  • 滁州网站建设设计网络营销优化培训
  • 芜湖镜湖区做网站公司中国新闻网发稿
  • 公司网站公司网站百度贴吧官网app下载
  • 装修网站论坛怎样在百度上推广
  • 建设个人网站第一步这么做网络营销推广方案整合
  • 网站建设开发技术天津关键词百度云
  • 做网站大概需要多少费用网站优化有哪些类型
  • 做餐饮要看的网站网络媒体推广产品
  • 青岛网站设计建议i青岛博采网络推广与优化
  • 哪有做网站推广石家庄网络营销网站推广
  • 如何查看网站的访问量磁力珠
  • 做网站弄什么语言搜索引擎推广培训
  • 淘宝客帮做网站网络广告营销经典案例
  • 有不收费的网站seo推广公司价格
  • 做配电柜在哪个网站发布信息厦门人才网招聘最新信息
  • 做网站公司需要什么资质长沙疫情最新消息今天封城了
  • 如何给自己的公司网站做优化网站建站公司
  • 深圳网站搭建专业公司今日最新足球推荐
  • 互联斗士网站建站今日百度小说排行榜
  • 本溪网站设计公司品牌推广专员
  • 南阳网站建设域名公司站长申论
  • 国内用react做的网站网站优化外包
  • 一级页面的网站怎么做的百度广告投放价格表
  • 网站设计例子百度竞价排名案例分析
  • 政府网站php源码软文推广500字
  • 无锡开发网站建设结构优化是什么意思