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

C++20练习代码

一.类的定义练习类的基本操作1.1String类定义完成了String类的基本操作的定义并进行检验。其中有些注意点1.显示类型转换static_cast();2.NRVO:具名返回值优化编译器会直接消除掉 result 这个局部变量的存在感直接在外部调用者接收返回值的地方构造对象。零拷贝零额外的析构效率极高。 这在 C17 中甚至被写入了语言标准强制 RVO保证一定不会发生拷贝。3.strlenchar*、strcpy(char*,char*)//赋值第二个字符串到第一个字符串中、strcmp(char*,char*)//一一比较两个字符串的每个字符的ASCII码strcat(char*,char*)//追加第二个字符串到第一个字符串后面。4.stong_ordering::(less\greater\equal)重载函数时使用非常标准。5.new,delete;new[],delete[];malloc,free成对使用绝不可混搭。6.noexcept 指明函数绝不会返回报错7.std::move()用作移动语义#define _CRT_SECURE_NO_WARNINGS #includecstring #includeiostream #includecompare class String { public: //默认构造函数 String() { size 0; ch new char[1]; ch[0] 0; } //赋值构造函数 String(const char* c) { if (c) { size static_castint(std::strlen(c)); ch new char[size1]; std::strcpy(ch, c); } else { size 0; ch new char[1]; ch[0] \0; } } String(const String c)//拷贝构造函数 { size c.size; ch new char[size 1]; std::strcpy(ch, c.ch); } //移动构造函数 String(Strings)noexcept//告诉编译器这个过程绝不会抛出异常 { ch s.ch; size s.size; std::cout 调用了移动构造\n; s.ch nullptr; s.size 0; } ~String() { delete[] ch;//析构数组 } //拷贝赋值运算符 String operator(const String s) { if (this ! s) {//两阶段解析机制但这里是两个指针在进行比较。 delete[] ch; size s.size; std::strcpy(ch, s.ch); } return *this; } //移动赋值运算符 String operator(String s) noexcept { if (this ! s) { delete[]ch; ch s.ch; size s.size; std::cout 调用了移动构造\n; s.ch nullptr; s.size 0; } return *this; } String operator(const char* s) { if (s) { delete[] ch; size static_castint(std::strlen(s)); ch new char[size 1]; std::strcpy(ch, s); } return *this; } //重载 String operator(const char* c) { String result;//默认构造函数 if (c) { result.size this-size static_castint(std::strlen(c)); delete[] result.ch; result.ch new char[result.size 1]; std::strcpy(result.ch, this-ch); std::strcat(result.ch, c);//追加 } else { result *this; } return result;//NRVO(具名返回值优化编译器会直接消除掉 result 这个局部变量的存在感直接在外部调用者接收返回值的地方构造对象。零拷贝零额外的析构效率极高。 这在 C17 中甚至被写入了语言标准强制 RVO保证一定不会发生拷贝。) } //重载两个String类相加 String operator(const String s)const { String result; result.size size s.size; delete[] result.ch; result.ch new char[result.size 1]; std::strcpy(result.ch, ch); std::strcat(result.ch, s.ch); return result; } //实现将一个String类与一个C风格字符串相加 std::strong_ordering operator(const String S) const { int cmp std::strcmp(this-ch, S.ch);//将字符一个个比较 if (cmp 0) { return std::strong_ordering::less; } if (cmp 0) { return std::strong_ordering::greater; } return std::strong_ordering::equal; } bool operator(const String S) const { return std::strcmp(this-ch, S.ch) 0; } //返回底层C风格字符串 const char* c_str()const { return ch; } //返回字符串长度 int length()const { return size; } private: int size; char* ch; }; int main() { String s1; String s2{ Hello }; String s3{ s2 }; s1 World; String s4 s2 C; String s5 { Good }; String s6 { morning }; String s7 s5 s6; String s8{ keepworking }; String s9 std::move(s8);//移动构造 String s10{ realword }; s8 std::move(s10); std::cout s2: s2.c_str() std::endl; std::cout s1: s1.c_str() std::endl; std::cout s4: s4.c_str() std::endl; std::cout s7: s7.c_str() std::endl; std::cout s9: s9.c_str() std::endl; std::cout s8: s8.c_str() std::endl; if ((s2 s1) std::strong_ordering::less) { std::cout s2.c_str() is less than s1.c_str() std::endl; } return 0; }1.2.Vector类二.类的继承及多态练习三.模板练习3.1类模板3.2模板函数3.3模板对象lambda3.4模板变量3.5别名3.6编译时if(if constexpr)四.类型转换练习五.错误处理练习六.

相关文章:

C++20练习代码

一.类的定义练习&#xff09;&#xff08;类的基本操作&#xff09;1.1String类定义完成了String类的基本操作的定义&#xff0c;并进行检验。其中有些注意点&#xff1a;1.显示类型转换static_cast<>();2.NRVO:具名返回值优化编译器会直接消除掉 result 这个局部变量的存…...

ChatGPT插件开发调试利器:本地代理工具原理与实战指南

1. 项目概述&#xff1a;一个为ChatGPT插件开发者准备的“瑞士军刀”如果你正在或者打算开发一个ChatGPT插件&#xff0c;那么你大概率会遇到一个共同的痛点&#xff1a;本地调试。官方的开发流程虽然清晰&#xff0c;但涉及到网络代理、本地服务暴露、复杂的请求签名验证等一系…...

Agent工具调用中的错误处理 重试机制降级处理

重试机制 重试机制&#xff08;Retry&#xff09; 是一种软件设计模式&#xff0c;它允许系统在检测到某个操作失败时&#xff0c;按照预定义的策略&#xff08;如次数、间隔时间等&#xff09;自动重新尝试执行该操作&#xff0c;提高容错能力并保障系统的稳定性。 详细内容…...

Tiled地图编辑器完全指南:三步打造专业级2D游戏地图

Tiled地图编辑器完全指南&#xff1a;三步打造专业级2D游戏地图 【免费下载链接】tiled Flexible level editor 项目地址: https://gitcode.com/gh_mirrors/ti/tiled Tiled是一款免费开源的2D地图编辑器&#xff0c;专为游戏开发者设计&#xff0c;支持创建各种类型的瓦…...

YOLOv11森林栖息地美洲红尾鸲目标检测数据集-497张-bird-1_3

YOLOv11森林栖息地美洲红尾鸲目标检测数据集 &#x1f4ca; 数据集基本信息 目标类别&#xff1a; [‘american-redstart’]中文类别&#xff1a;[‘美洲红尾鸲’]训练集&#xff1a;348 张验证集&#xff1a;99 张测试集&#xff1a;50 张总计&#xff1a;497 张 &#x1f4c4…...

Refined Now Playing:网易云音乐沉浸式播放界面与歌词动画渲染技术深度剖析

Refined Now Playing&#xff1a;网易云音乐沉浸式播放界面与歌词动画渲染技术深度剖析 【免费下载链接】refined-now-playing-netease &#x1f3b5; 网易云音乐沉浸式播放界面、歌词动画 - BetterNCM 插件 项目地址: https://gitcode.com/gh_mirrors/re/refined-now-playin…...

Nexus-7B-V3上线,长文本推理新突破

由于实时搜索接口暂时未能返回具体的最新资讯数据&#xff0c;我将基于当前&#xff08;2026年5月&#xff09;AI领域的技术发展趋势和近期常见的更新模式&#xff0c;为您梳理过去一周内可能发生的典型AI工具、模型及API更新动态。以下内容基于行业常规迭代逻辑推演&#xff0…...

Windows风扇终极控制指南:3分钟掌握专业级静音散热方案

Windows风扇终极控制指南&#xff1a;3分钟掌握专业级静音散热方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

告别Keil官网龟速下载!手把手教你用国内镜像站搞定MDK5和STM32芯片包

告别Keil官网龟速下载&#xff01;国内镜像站高效部署MDK5全攻略 每次打开Keil官网准备下载MDK5安装包时&#xff0c;进度条仿佛被按下了慢放键&#xff1f;作为STM32开发者&#xff0c;我完全理解这种焦虑——明明硬件已经就绪&#xff0c;却卡在软件环境搭建的第一步。经过多…...

从PCIe到SRIO:拆解Xilinx K7 GTX IP核,看高速协议背后的Serdes实战配置

从PCIe到SRIO&#xff1a;拆解Xilinx K7 GTX IP核&#xff0c;看高速协议背后的Serdes实战配置 在当今高速数据传输领域&#xff0c;FPGA的GTX收发器已成为实现PCIe、SRIO等协议的关键硬件基础。不同于传统的并行总线&#xff0c;GTX通过Serdes技术实现了GHz级的高速串行通信&a…...

开源协作平台Olla:从代码托管到社区生态的技术架构与部署实践

1. 项目概述&#xff1a;一个面向开发者的开源项目协作平台最近在和一些独立开发者朋友交流时&#xff0c;发现大家普遍面临一个痛点&#xff1a;手头有一些不错的开源项目想法&#xff0c;但要么因为缺乏持续维护的动力而烂尾&#xff0c;要么因为找不到合适的协作者而进展缓慢…...

SAP MRP日期配置避坑指南:从收货处理天数到计划边际码,一次讲透所有时间参数

SAP MRP日期配置实战指南&#xff1a;从参数解析到避坑策略 在SAP PP模块实施过程中&#xff0c;物料需求计划&#xff08;MRP&#xff09;的日期配置堪称最令人头疼的"雷区"之一。我曾亲眼目睹一家制造业客户因"收货处理天数"配置错误&#xff0c;导致价值…...

嵌入式Intel架构固件技术解析与优化实践

1. 嵌入式Intel架构固件技术全景解析作为一位在嵌入式系统领域深耕多年的固件工程师&#xff0c;我见证了Intel架构在工业控制、医疗设备、零售终端等领域的广泛应用。与通用PC不同&#xff0c;嵌入式系统的固件设计需要面对更严苛的启动时间要求、更极致的资源占用控制&#x…...

别再只调超参了!给ResNet/Inception加个SE模块,让你的模型性能原地起飞

模型性能提升利器&#xff1a;SE模块工程实践指南 在深度学习模型优化领域&#xff0c;我们常常陷入一个误区——认为只有不断增加网络深度或调整超参数才能获得性能提升。但事实上&#xff0c;有时候一些精巧的"微创手术"式改动&#xff0c;往往能以更低的成本带来更…...

Horos医疗影像查看器完全指南:macOS平台的专业级开源解决方案

Horos医疗影像查看器完全指南&#xff1a;macOS平台的专业级开源解决方案 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is b…...

英飞凌TC275实战:从零配置CAN FD驱动,让你的电机控制数据飞起来

英飞凌TC275实战&#xff1a;从零配置CAN FD驱动&#xff0c;让你的电机控制数据飞起来 在工业自动化与机器人控制领域&#xff0c;实时数据传输的可靠性与速度直接决定了系统性能上限。传统CAN总线受限于8字节数据帧和1Mbps波特率&#xff0c;在面对现代高精度电机控制时已显捉…...

电商场景下小型语言模型(SLM)的优化与实践

1. 项目背景与核心挑战电商场景下的语言模型应用正面临一个关键转折点。过去三年间&#xff0c;我参与过7个不同规模的电商智能客服系统部署&#xff0c;发现大型语言模型&#xff08;LLM&#xff09;在实际业务中面临三大痛点&#xff1a;响应延迟高&#xff08;平均超过2秒&a…...

别只删文件!用Python脚本智能清理DeepSpeed检查点,解决PyTorch保存错误

智能管理DeepSpeed检查点&#xff1a;Python自动化清理与容错方案设计 当你在深夜盯着屏幕上闪烁的训练进度条时&#xff0c;最不想看到的就是因为磁盘空间不足导致的保存失败。这种错误不仅会中断训练流程&#xff0c;还可能丢失宝贵的中间结果。传统的解决方案——手动清理检…...

用Python和YOLOv5s搞个‘AI准星’:从屏幕抓取到鼠标控制的完整实现(附CSGO模型)

Python与YOLOv5s实战&#xff1a;构建高精度屏幕目标检测系统 技术选型与核心思路 在计算机视觉与自动化控制结合的领域&#xff0c;实时屏幕目标检测一直是个有趣且实用的课题。不同于传统图像处理方案&#xff0c;基于深度学习的方法能够更准确地识别复杂场景中的特定目标。这…...

GhostRelay:为OpenClaw AI代理框架打造图形化控制界面

1. 项目概述&#xff1a;GhostRelay OpenClaw Patch 如果你正在寻找一种方式&#xff0c;能将OpenClaw这个强大的本地AI代理框架&#xff0c;与一个更直观、更易管理的桌面控制界面结合起来&#xff0c;那么GhostRelay OpenClaw Patch&#xff08;以下简称GhostRelay&#xff0…...

云原生部署实战:从IaC到CI/CD的完整技能体系与最佳实践

1. 项目概述&#xff1a;从“一键部署”到“云端技能”的深度解构最近在GitHub上看到一个挺有意思的项目&#xff0c;叫smouj/cloud-deploy-skill。光看这个名字&#xff0c;可能很多朋友会直接把它归类为又一个“一键部署脚本”的仓库。但如果你像我一样&#xff0c;在云原生和…...

终极指南:5分钟掌握Mem Reduct,彻底解决Windows内存不足问题

终极指南&#xff1a;5分钟掌握Mem Reduct&#xff0c;彻底解决Windows内存不足问题 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/…...

Midjourney参数调校实战:用--chaos和--seed玩转可控的“随机”艺术

Midjourney参数调校实战&#xff1a;用--chaos和--seed玩转可控的“随机”艺术 当AI绘画工具Midjourney逐渐成为创意工作者的标配&#xff0c;许多用户发现一个有趣的现象&#xff1a;同样的提示词&#xff08;prompt&#xff09;在不同时间生成的结果可能天差地别。这种不可预…...

EMC整改省钱攻略:用几毛钱的扣式磁环和绕线技巧,快速搞定产品辐射超标测试

EMC整改实战&#xff1a;低成本磁环应用技巧与辐射超标快速解决方案 在产品研发的最后阶段&#xff0c;EMC实验室里那台闪烁的频谱分析仪往往成为硬件工程师的噩梦。当红色警示线在某个频点持续超标时&#xff0c;时间压力和预算限制会让常规的PCB改版方案变得不切实际。这时&a…...

如何找回被遗忘的数字记忆:用WeChatMsg为你的对话建立永久档案

如何找回被遗忘的数字记忆&#xff1a;用WeChatMsg为你的对话建立永久档案 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...

终极鼠标连点器:5分钟快速上手,彻底解放你的双手

终极鼠标连点器&#xff1a;5分钟快速上手&#xff0c;彻底解放你的双手 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#…...

向量数据库统一接口实践:vectordbz简化多后端开发与迁移

1. 项目概述&#xff1a;向量数据库的“瑞士军刀”最近在折腾AI应用&#xff0c;特别是RAG&#xff08;检索增强生成&#xff09;这块&#xff0c;发现向量数据库的选择和部署是个绕不开的坎。市面上方案不少&#xff0c;从云服务到开源自建&#xff0c;各有各的优缺点。直到我…...

一键自动化安装IDE扩展:提升开发环境配置效率的脚本工具

1. 项目概述&#xff1a;一键安装IDE扩展的脚本工具在开发过程中&#xff0c;我们经常需要在不同的机器上配置开发环境&#xff0c;或者为团队新成员快速搭建一套标准的工具链。其中&#xff0c;为代码编辑器或集成开发环境&#xff08;IDE&#xff09;安装必要的扩展插件&…...

利用AI自动生成Git提交信息:commitgpt工具详解与实践指南

1. 项目概述与核心价值最近在代码提交信息&#xff08;Commit Message&#xff09;的规范化和自动化生成上&#xff0c;我又踩了个不大不小的坑。一个匆忙的提交&#xff0c;写了个“fix bug”就推了上去&#xff0c;结果一周后回溯问题&#xff0c;对着几十个类似的提交记录&a…...

在社交媒体内容分析场景中利用Taotoken聚合大模型能力

在社交媒体内容分析场景中利用Taotoken聚合大模型能力 1. 社交媒体分析的模型选型需求 海外社交媒体文本分析通常面临多语言处理、文化差异理解等复杂需求。单一模型可能难以覆盖所有场景&#xff0c;例如某些模型擅长英语情感分析但中文处理较弱&#xff0c;另一些模型在特定…...