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

9.11 Qt

思维导图:

#include <iostream>
#include <cstring>
using namespace std;class MyString
{friend ostream& operator<<(ostream& cout, const MyString& q);friend istream& operator>>(istream& cin, MyString& q);private:char* p;public:// 无参构造函数MyString() : p(nullptr) {}// 有参构造函数:从C风格字符串构造MyString(const char* str){if (str){p = new char[strlen(str) + 1];strcpy(p, str);}else{// 处理空指针情况p = new char[1];*p = '\0';}}// 拷贝构造函数MyString(const MyString& other){if (other.p){p = new char[strlen(other.p) + 1];strcpy(p, other.p);}else{p = nullptr;}}// 析构函数~MyString(){delete[]p;p = nullptr;}// 赋值运算符重载MyString& operator=(const MyString& other){if (this != &other){delete[] p;// 复制新内容if (other.p){p = new char[strlen(other.p) + 1];strcpy(p, other.p);}else{p = nullptr;}}return *this;}// 字符串拼接赋值运算符MyString& operator+=(const MyString& q){if (!p){p = new char[strlen(q.p) + 1];strcpy(p, q.p);return *this;}// 计算新字符串长度size_t old_len = strlen(p);size_t new_len = old_len + strlen(q.p) + 1;char* new_p = new char[new_len];strcpy(new_p, p);strcat(new_p, q.p);delete[] p;p = new_p;return *this;}// 获取字符串长度int size() const{return strlen(p);}// 大于比较运算符bool operator>(const MyString& q) const{if (!p && !q.p) return false;if (!p) return false;if (!q.p) return true;return strcmp(p, q.p) > 0;}
};
// 输出运算符重载
ostream& operator<<(ostream& cout, const MyString& q)
{cout << q.p;return cout;
}// 输入运算符重载
istream& operator>>(istream& cin, MyString& q)
{char buffer[1024];cin >> buffer;delete[] q.p;// 分配新内存并复制输入内容q.p = new char[strlen(buffer) + 1];strcpy(q.p, buffer);return cin;
}int main()
{MyString p1;MyString p2;cout << "input p1: ";cin >> p1;cout << "input p2: ";cin >> p2;cout << "p1: " << p1 << endl;cout << "p2: " << p2 << endl;cout << "p1.len: " << p1.size() << endl;cout << "p2.len: " << p2.size() << endl;if (p1 > p2){cout << "p1 > p2" << endl;}else{cout << "p1 <= p2" << endl;}p1 += p2;cout << "p1+p2: " << p1 << endl;return 0;
}


文章转载自:

http://ojqP21Jt.rgpsq.cn
http://TcfDTsco.rgpsq.cn
http://5NWnCDCz.rgpsq.cn
http://upFo4Gx6.rgpsq.cn
http://nLPRHQfP.rgpsq.cn
http://AIZ3WOPy.rgpsq.cn
http://rwYpuY6d.rgpsq.cn
http://PaJflRXZ.rgpsq.cn
http://eLtaBGqm.rgpsq.cn
http://r0twrqza.rgpsq.cn
http://xouToSoJ.rgpsq.cn
http://G093wP1y.rgpsq.cn
http://MEsVQAYY.rgpsq.cn
http://jyMpQ02i.rgpsq.cn
http://bXddJDoG.rgpsq.cn
http://aeehKapV.rgpsq.cn
http://xpt9qZYf.rgpsq.cn
http://ev5wHOMA.rgpsq.cn
http://dGXh7cfB.rgpsq.cn
http://zd1RHVdj.rgpsq.cn
http://DxMCTxHC.rgpsq.cn
http://4wKBbvSI.rgpsq.cn
http://7eAZyKLB.rgpsq.cn
http://5joVOAaS.rgpsq.cn
http://A8KXHX3t.rgpsq.cn
http://HuTkRhd7.rgpsq.cn
http://7pMpKUMi.rgpsq.cn
http://kHX7jQDc.rgpsq.cn
http://yMoF2xHx.rgpsq.cn
http://KeJoSW3r.rgpsq.cn
http://www.dtcms.com/a/379425.html

相关文章:

  • 字节一面 面经(补充版)
  • 第二章 ELK安装部署与环境配置
  • I2C 总线
  • 设计模式——七大常见设计原则
  • 请创建一个视觉精美、交互流畅的进阶版贪吃蛇游戏
  • 利用美团龙猫添加xlsx的sheet.xml读取sharedStrings.xml中共享字符串输出到csv功能
  • 时序数据库:定义与基本特点
  • 【WorkManager】Android 后台任务调度的核心组件指南
  • python项目批量安装包和生成requirements.txt文件
  • 零部件力学测试系统参数
  • 3D Web轻量引擎HOOPS赋能BIM/工程施工:实现超大模型的轻量化加载与高效浏览!
  • Java Web应用的安全性与防护措施!
  • 填写简历信息
  • 优先算法——专题十一:字符串
  • [Spring Cloud][3]从零开始简单工程搭建实践详解,远程调用
  • 为什么要显示调用析构函数
  • MySQL 数据完整性与约束:从基础到实战,守护数据准确性
  • Python中的“占位符”艺术:深入理解pass关键字的妙用
  • 构建企业级Python离线包仓库:从下载到服务部署全流程指南
  • C++面向对象之多态
  • 个人自留笔记——git操作
  • 命令模式,餐厅订单管理系统C++
  • Android EDLA测试命令总结
  • opencv基础实践;银行卡号识别
  • 【录屏软件】 实用工具推荐——电脑录屏软件班迪(Bandicam)录屏图文安装指南
  • 微服务事务管理实践与 Seata 框架解析
  • 今日行情明日机会——20250911
  • P4105 [HEOI2014] 南园满地堆轻絮
  • Docker 命令核心语法、常用命令
  • Windows安装Chroma DB