网站建设玖金手指排名12免费网站建设联系电话

bicheng/2026/1/16 23:59:16/文章来源:
网站建设玖金手指排名12,免费网站建设联系电话,wordpress做成论坛,怎么找客户渠道作业 1 自行封装一个栈的类#xff0c;包含私有成员属性#xff1a;栈的数组、记录栈顶的变量 成员函数完成#xff1a;构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 02stack.h: #ifndef __02STACK_H__ #define __…作业 1 自行封装一个栈的类包含私有成员属性栈的数组、记录栈顶的变量 成员函数完成构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 02stack.h: #ifndef __02STACK_H__ #define __02STACK_H__ #include iostream#define MAX 10 //栈的容量 using namespace std;class Stack{ private:int *data; //栈的数组int top; //栈顶下标 public://构造函数Stack();//析构函数~Stack();//拷贝构造函数Stack(const Stack other);//判空bool empty();//判满bool full();//入栈int push();//出栈int pop();//清空栈int clear();//获取栈顶元素int get_top_value();//求栈的大小int size(); };#endif // 02STACK_H02stack.cpp: #include 02stack.h//构造函数 Stack::Stack():data(new int[MAX]),top(-1){ //栈顶从-1开始cout初始化成功endl;//cout构造函数endl; } //析构函数 Stack::~Stack(){delete []data;//cout析构函数endl; } //拷贝构造函数 Stack::Stack(const Stack other){top other.top;data new int[MAX];for(int i 0;i top;i){data[i] other.data[i];}cout拷贝成功endl;//cout拷贝构造函数endl; } //判空 bool Stack::empty(){return top -1; } //判满 bool Stack::full(){return top MAX-1; } //入栈 int Stack::push(){if(full()){cout栈满入栈失败endl;return -1;}int value;cout请输入您要入栈的元素:;cinvalue;top;data[top] value;coutvalue 入栈成功endl;//couttop topendl;return 0; } //出栈 int Stack::pop(){if(empty()){cout栈空出栈失败endl;return -1;}int temp data[top];data[top] 0;top--;couttemp 出栈成功endl;return 0; } //清空栈 int Stack::clear(){data[top] 0;while (top--0) {data[top] 0;}cout清空栈成功endl;return 0; } //获取栈顶元素 int Stack::get_top_value(){cout栈顶元素为:data[top]endl;return 0; } //求栈的大小 int Stack::size(){cout栈的大小为:top1endl;return 0; }main.cpp: #include 02stack.hint main() {Stack s;s.push();s.push();s.push();s.get_top_value();s.size();Stack s1 s;s1.size();s1.get_top_value();s.pop();s.clear();s.size();return 0; }效果图 2 自行封装一个循环顺序队列的类包含私有成员属性存放队列的数组、队头位置、队尾位置 成员函数完成构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小 03queue.h: #ifndef __03QUEUE_H__ #define __03QUEUE_H__ #include iostream#define MAX 10 using namespace std;class Queue{ private:int front;int back;int *data; public://构造函数Queue();//析构函数~Queue();//拷贝构造函数Queue(const Queue other);//判空bool empty();//判满bool full();//入队int push();//出队int pop();//清空队列int clear();//求队列大小int size(); };#endif // 03QUEUE_H03queue.cpp: #include 03queue.h//构造函数 Queue::Queue():front(0),back(0),data(new int[MAX]){cout初始化成功endl;cout构造函数endl; } //析构函数 Queue::~Queue(){delete []data;cout析构函数endl; } //拷贝构造函数 Queue::Queue(const Queue other){front other.front;back other.back;data new int[MAX];if(front back){for(int i front;i back;i){data[i] other.data[i];}}if(front back){for(int i front;i backMAX;i){data[i%MAX] other.data[i%MAX];}}//coutq1.front frontendl;//coutq1.back backendl;//coutfront other.frontendl;//coutback other.backendl;cout拷贝构造函数endl; } //判空 bool Queue::empty(){return front back; } //判满 bool Queue::full(){return (back1)%MAX front; } //入队 int Queue::push(){if(full()){cout队列已满入队失败endl;return -1;}int value;cout请输入您要入队的元素:;cinvalue;data[back] value;back (back1)%MAX;//coutfront frontendl;//coutback backendl;coutvalue 入队成功endl;return 0; } //出队 int Queue::pop(){if(empty()){cout队列已空出队失败endl;return -1;}int temp data[front];data[front] 0;front (front1)%MAX;//coutfront frontendl;//coutback backendl;couttemp 出队成功endl;return 0; } //清空队列 int Queue::clear(){if(front back){for(int i front;i back;i){data[i] 0;}}if(front back){for(int i front;i backMAX;i){data[i%MAX] 0;}}front back 0;//coutfront frontendl;//coutback backendl;cout清空队列成功endl;return 0; } //求队列大小 int Queue::size(){cout队列大小为:(backMAX-front)%MAXendl;return 0; }main.cpp: #include 03queue.hint main() {Queue q;q.push();q.push();q.push();q.size();Queue q1 q;q1.size();q.pop();q.pop();q.size();q.push();q.clear();return 0; }效果图 一、类 1.1 类的定义格式 class 类名 {public:公共的成员变量、成员函数的定义protected:受保护的成员变量、成员函数private:私有的成员变量、成员函数 };//注意 1、类中是有访问权限控制public该权限下的成员可以在类内、子类中、类外被访问protected该权限下的成员可以在类内、子类中被访问类外不能被访问private:该权限下的成员可以在类内被访问子类中和类外都无权访问 2、类中的访问权限是针对于类体而言的跟类对象没有关系 3、如果没有给定访问权限默认是私有的访问权限 4、每个访问权限可以出现多次可以出现在类内的任何位置每种访问权限的作用域是从该关键字开始到下一个关键字或整个类体结束为止 5、我们通常将某个权限下的所有成员放到一个访问权限关键字下 6、通常成员属性一般定义成私有权限成员函数一般定义成公有权限 7、类中的成员函数可以访问类中的任意权限下的成员包括私有成员 1.2 类的大小 1 一个空类的大小为1字节起到占位作用如果有成员属性则会将这一字节分配给成员属性 2 类的大小也跟结构体一样遵循字节对齐 3 类中的普通成员函数不占类的大小即使成员函数中有变量 4 类中如果存在虚函数那么会默认提供一个指针的大小后期讲 1.3 C中结构体与类的区别 1 C中结构体跟类没什么太大区别主要的区别是默认访问权限和默认继承方式不同 2 C中结构体的默认访问权限是public而类的默认访问权限是private 3 C中结构体的默认继承方式是public而类的默认继承方式是private 4 使用场景一般实现数据结构的相关操作我们使用结构体完成其他有关类对象的实现我们使用类来完成 二、this指针 2.1 引入目的 在类的定义过程中有可能需要使用一个变量来指代类对象本身用来找该类中的成员属性或成员变量此时C编译器会给类中所有非静态成员函数提供一个隐藏的形参指针this表明指代该类本身哪个对象使用我我就指向哪个对象的起始地址。 2.2 this的原型推导 1 原型类名 * const this; 2 可以通过this指针更改类中的内容但是不能更改this的指向 3 只有成员函数中才能使用this指针是每个非静态成员函数都拥有的一个隐藏形参 2.3 必须使用this的场景 1 当非静态成员函数中函数的形参名或局部变量名与类的成员名同名时在函数体内必须使用this指针加以区分否则使用的是局部变量 2 在拷贝赋值函数中需要返回自身的引用时需要使用this指针 三、类中特殊的成员函数 当定义一个类时编译器会给类体提供一些特殊的函数。 特殊原因如果没有显性定义这些函数系统会默认提供这些函数如果显性定义了这些函数系统就不再提供默认的了 这些函数无需显性调用特殊时期系统会自动调用 特殊函数构造函数、析构函数、拷贝构造、拷贝赋值、移动构造、移动赋值、取地址运算符重载、常取地址运算符重载 3.1 构造函数 1 功能使用类实例化对象时用于给类对象申请资源并初始化用的 2 定义格式 1、函数名与类同名 2、没有返回值连void都没有 3、权限一般为public 4、参数可以有也可以没有参数构造函数可以重载 5、格式类名(形参列表){函数体内容} 3 调用时机 在使用类实例化对象过程中系统自动调用该函数无需手动调用 栈区实例化对象时系统自动调用构造函数 类名 对象名实参列表 //此时系统会自动调用构造函数 堆区定义类对象指针时不会调用构造函数当使用new关键字给类对象申请空间时会自动调用构造函数 类名 *指针名 //此时不会调用构造函数 指针名 new 类名(实参列表); //此时才会调用构造函数 4 注意 1、如果类内没有显性定义任何构造函数系统会默认提供一个无参构造函数 2、如果显性定义了任意一种有参构造函数系统就不再提供无参构造函数了如果非要使用无参构造函数需要显性再定义出无参构造函数 3、 一个类中可以定义多个构造函数这多个构造函数构成重载关系 4、构造函数的也支持默认参数 #include iostreamusing namespace std; class Stu { private:string name;int age;double score;public://显性定义无参构造函数Stu(){coutStu::无参构造endl;}Stu(string n){name n; //给成员变量n进行赋值coutStu::一个参数的构造函数endl;}//带默认参数的构造函数Stu(string n, int a, double s 90){name n;age a;score s;coutStu::所有参数的构造函数endl;}//定义成员函数void show(){coutname nameendl;coutage ageendl;coutscore scoreendl;} };int main() {Stu s1; //在栈区实例化一个学生对象s1.show(); //随机值cout***************************************endl;Stu *p1; //不会调用构造函数p1 new Stu; //此时会调用构造函数p1-show();cout***************************************endl;Stu s2(zhangpp);s2.show();cout***************************************endl;Stu s3(zhangsan, 18);s3.show();return 0; }5 构造函数可以设置初始化列表 1、使用格式在构造函数的形参列表后由冒号引出初始化列表完成初始化工作 类名(类型1 形参1 类型2 形参2。。。类型n 形参n)成员1形参1成员2形参2。。。成员n(参数n) { 函数体内容 } 2、注意在初始化列表中括号内是形参数据括号外是成员数据不要写反 6 构造函数必须使用初始化列表的情况 1、当类中的成员有引用成员时必须在初始化列表中对该引用成员进行初始化 2、当类中有const修饰的成员变量时对该成员的的初始化也必须放在初始化列表中 3、当构造函数的形参名和成员变量名同名时可以使用初始化列表来解决初始化问题 4、当类中有其他类的对象作为成员变量时对该类对象的初始化工作也必须在初始化列表中完成需要在初始化列表中显性调用成员对象的有参构造完成初始化工作如果没有显性调用成员对象的有参构造系统会自动调用该成员对象的无参构造来完成对该成员对象的初始化工作 3.2 析构函数 1 功能在类对象消亡时用于回收类对象的资源空间用的 2 定义格式 1、函数名是在类名前加~~类名 2、参数无 3、返回值没有 4、权限一般为public 5、格式~类名{} 3 调用时机 栈区类对象的作用域结束时系统会自动调用该类的析构函数完成对对象的内存回收。 堆区何时使用delete何时调用析构函数一直不调用一直不析构 4 注意 1、如果类中没有显性定义析构函数系统会默认提供一个析构函数完成对成员内存的回收工作 2、如果类中显性定义了析构函数系统就不再提供默认的析构函数了 3、构造和析构的顺序 栈区先构造的后析构后构造的先析构在同一作用域下 堆区何时使用delete何时调用析构函数 4、如果类中没有指针成员那么使用系统提供的析构函数就足够完成对类对象的内存回收 如果类中有指针成员并指向堆区空间需要显性定义析构函数在析构函数的函数体内将成员指针指向的空间进行释放否则会内存泄漏 5、一个类中析构函数只能有一个 3.3 拷贝构造函数 1 拷贝构造函数是一个特殊的构造函数功能是使用一个类对象给另一个类对象初始化时系统自动调用 string s1(hello world); //有参构造 string s2 s1; //调用拷贝构造 string s3(s2); //拷贝构造函数 2 定义格式 1、函数名与类同名 2、没有返回值 3、参数同类的其他类对象的引用 4、权限一般为public 5、格式类名(const 类名 other){} 3 调用时机 1、使用一个类对象给另一个类对象初始化时系统自动调用 2、函数形参时类对象时实参向形参传递时也会调用拷贝构造函数 3、函数返回值是类对象时函数调用时也会调用拷贝构造函数 4 注意事项 1、如果没有显性定义拷贝构造函数系统会默认提供一个拷贝构造函数来完成对象成员之间的简单赋值 2、如果显性定义了拷贝构造函数系统就不再提供默认的拷贝构造函数了 5 深浅拷贝 1、在一个类中如果没有显性定义拷贝构造函数系统会默认提供一个拷贝构造函数来完成类对象之间的简单赋值这个拷贝构造函数是一个浅拷贝如果类中无指针成员那么使用该拷贝构造函数没有问题 2、如果类中有指针成员并且指向堆区空间使用浅拷贝就会造成对同一个堆区空间的多次释放问题会产生double free的段错误 3、此时就需要显性定义拷贝构造函数完成深拷贝在拷贝构造函数的初始化列表中给自己的指针成员重新申请出一个空间将原对象的指针成员指向的空间内容赋值过来即可完成深拷贝 #include iostreamusing namespace std; class Stu { private:string name;int age;double score;public://显性定义无参构造函数Stu(){coutStu::无参构造endl;}//带默认参数的构造函数Stu(string n, int a, double s ):name(n),age(a),score(s){coutStu::有参构造函数endl;}//定义析构函数~Stu(){coutStu::析构函数:thisendl;}//定义拷贝构造函数Stu(const Stu other):name(other.name), age(other.age), score(other.score){cout拷贝构造函数endl;}//定义成员函数void show(){coutname nameendl;coutage ageendl;coutscore scoreendl;} };//定义一个全局函数,实参向形参传递时调用拷贝构造函数返回时也会调用拷贝构造 Stu fun(Stu s) //int num 520; {s.show();return s; }int main() {Stu s1(zhangpp, 18, 90); //调用有参构造函数fun(s1);return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress评论提示株洲seo优化哪家便宜

系列文章目录 FPGA静态时序分析与约束(二)、时序分析 FPGA静态时序分析与约束(三)、读懂vivado时序报告 文章目录 系列文章目录前言一、概述一、何为亚稳态?二、图解亚稳态三、什么时候亚稳态会导致系统失效&#xff…

安丘做网站的公司社区服务流程的文献

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

建站公司用的开源框架在自己的电脑做网站空间

https://stackoverflow.com/questions/33527653/babel-6-regeneratorruntime-is-not-defined 移动端 px2rem-loader 转载于:https://www.cnblogs.com/smzd/p/10560176.html

网站导航栏不显示国内做的比较好的网站是什么

首先定义一个定时任务函数tasks.py(见文章末尾示例),编写函数,然后在setting.py中配置定时任务 1、首先安装django-crontab pip install django-crontab 2、在setting.py中添加应用 (在所有自定义注册app之上) INSTALLED_APPS …

成都装修设计公司网站怎么做互联网营销推广

目录 边缘计算简介任务卸载简介边缘存储系统 边缘计算简介 边缘计算是指利用靠近数据生成的网络边缘侧的设备(如移动设备、基站、边缘服务器、边缘云等)的计算能力和存储能力,使得数据和任务能够就近得到处理和执行。 一个典型的边缘计算系…

网站开发面试建英文网站有用吗

老师您好,有两个关于系统GMM的问题想请教一下:(1)在所学的教程里,系统GMM没有引入时间,我目前是分行业分国家的时间为T年的面板数据,请问时间应该放入xtdpdsys的命令中的哪个位置?代码是写作i.year吗&#…

企业网站怎么收录房屋设计装修公司

实现了购物基本功能,那来修改一下就可以用,app,h5,小程序都可以 购物车插件 - DCloud 插件市场

做网站学哪方面知识购物帮做特惠的网站

第二批本科(院校代码:1301)序号专 业 名 称学制科类计划数1汉语言文学(师范)四文科552汉语言文学(高级文秘)四文科803广播电视新闻学四文科304对外汉语四文科285历史学(师范)四文科306思想政治教育(师范)四文科207社会工作四文科258行政管理四文科459公共事业管理四…

nas可以做网站服务器小程序模板下载安装

在持续的试错和进步之间发布过下面内容: TFT屏幕在arduino (esp 32)下的驱动,汉字显示和字库比较_arduino gc9a01显示汉字-CSDN博客 在esp32(esp8266) 提供软字库显示中文的解决方案_tft_espi汉字-CSDN博客 单片机上软字库换32进…

杭州网站建设杭州手机网站建设wordpress文章打不开

业务背景 很久以前开源了一款 auto-log 自动日志打印框架。 其中对于 spring 项目,默认实现了基于 aop 切面的日志输出。 但是发现一个问题,如果切面定义为全切范围过大,于是 v0.2 版本就是基于注解 AutoLog 实现的。 只有指定注解的类或…

网站页面优化技巧越秀网站建设推广

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

哈铁工程建设公司网站桓台做网站

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 公有云时序数据库SLA 运营商产品每服务周期服务可用率不低于99.9%衡量服务不可用数据指标从采…

wordpress程序增大网站代码在线优化

Java的市场情况 需求减少 人员增加 面试难度增加 1、Java高级开发,100份简历,筛选了20份,邀约20个人面试 面试机会:录取人数20:1 充分准备通过面试的前提 不要裸面!!! 背葵花宝典(…

多语言网站(如何实现网站的多语言版本 )岳阳公司网站开发

Go语言中的加密艺术:深入解析crypto/subtle库 引言crypto/subtle库概览ConstantTimeCompare函数深入解析ConstantTimeSelect函数应用详解ConstantTimeLessOrEq函数实践指南安全编程实践性能优化与最佳实践与其他加密库的比较总结 引言 在当今快速发展的互联网时代&…

阿里云的虚拟主机用什么做网站android手机软件开发教程

其他数据库对象 视图: 常见数据库对象——视图:从表中抽出的逻辑上相关的数据集合。 所以:1. 视图基于表。2. 视图是逻辑概念。3. 视图本身没有数据。 创建视图 创建语法与创建表类似,只需要将table → view即可: SQL> …

怎么做直播网站超管网站策划书3000

目录 1 数据的传输方式1.1 并行传输1.2 串行传输 2 同步传输和异步传输2.1 同步传输2.2 异步传输2.3 同步和异步传输对比 1 数据的传输方式 在数据通信中,数据传输方式有并行传输和串行传输两种 1.1 并行传输 定义:并行传输是指数据以成组的方式在多个…

腾讯企业邮箱域名可以做网站吗怎么上不到建设银行网站

上一个说软件测试简单的,已经被面试官问死了。。。 现在已经过了 ”不会但我会学“ 就能感动面试官的时代,随着供需关系的变化,不论是对于面试官还是面试者,面试的成本越来越高。为了筛选到更优秀的程序员,面试官们可谓…

网站新闻页设计肇庆网站建设方案维护

目录 01 ​​​​​​​路由器越用越慢很平常 02 国区设置不要乱用 03 很容易被遗忘的IPv6设置 04 学会自我检查掉线问题 05 番外篇:测试自己的网速 “耳机、音箱通过一定时间的煲机,表现效果会变好,可为何家里WiFi网络却老是给人越用越慢、越…

外包网站问些什么问题展厅设计平面布置图

最优队列有多种叫法,什么小根堆,大根堆,小顶堆,大顶堆。 队列分多种,线性队列(简单队列),循环队列,最优队列等等。 最优队列,可以看作堆叠箱子,…

云盘网站如何做网站制作要求

作者通过SimpleSSD仿真模型,采用SLCQLC混合模式来开展进一步的验证工作。评估过程中,当写入请求到达固态硬盘时,首先会被写入缓存(DRAM),然后才被回写到NAND。文中引入了一个名叫做LRU(Least Recently Used…