码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2023年9月11日


    1.仿照string类,完成mystring类

    1. #include
    2. #include
    3. using namespace std;
    4. class mystring
    5. {
    6. private:
    7. char *str;
    8. int size;
    9. public:
    10. //无参构造
    11. mystring():size(10)
    12. {
    13. str = new char[size];
    14. strcpy(str,"");
    15. cout<<"无参构造"<
    16. }
    17. //有参构造
    18. mystring(const char *s)
    19. {
    20. size = strlen(s);
    21. str = new char[size+1];
    22. strcpy(str,s);
    23. cout<<"有参构造"<
    24. }
    25. //拷贝构造
    26. mystring(const mystring &other)
    27. {
    28. this->size=other.size;
    29. this->str=new char[this->size];
    30. strcpy(this->str,other.str);
    31. cout<<"拷贝构造"<
    32. }
    33. //析构函数
    34. ~mystring()
    35. {
    36. delete []str;
    37. cout<<"mystring::析构函数"<<this<
    38. }
    39. //拷贝赋值函数
    40. mystring & operator=(const mystring &other)
    41. {
    42. if(this != &other)
    43. {
    44. strcpy(this->str,other.str);
    45. this->size=other.size;
    46. //判断原来指针空间释放被清空
    47. if(this->str !=NULL)
    48. {
    49. delete this->str;
    50. }
    51. this->str=new char(*other.str);
    52. }
    53. cout<<"mystring::拷贝赋值函数"<
    54. return *this;
    55. }
    56. //判空函数
    57. bool str_empty()
    58. {
    59. return (this->size==0);
    60. }
    61. //size函数
    62. int str_size()
    63. {
    64. return strlen(this->str);
    65. }
    66. //c_str函数
    67. char *myc_str()
    68. {
    69. return str;
    70. }
    71. //at函数
    72. char &at(int pos)
    73. {
    74. return *(this->str+pos-1);
    75. }
    76. //加号运算符重载
    77. mystring operator+(const mystring &r)const
    78. {
    79. mystring s1;
    80. strcat(s1.str,this->str);
    81. strcat(s1.str,r.str);
    82. s1.size=this->size+r.size;
    83. return s1;
    84. }
    85. //加等于运算符重载
    86. mystring* operator+=(const mystring&r)
    87. {
    88. strcat(this->str,r.str);
    89. this->size+=r.size;
    90. return this;
    91. }
    92. //关系运算符重载(>)
    93. bool operator>(const char* &r)const
    94. {
    95. if(strcmp(this->str,r)<=0)
    96. {
    97. return 0;
    98. }
    99. return 1;
    100. }
    101. //中括号运算符重载
    102. char &operator[](int index)const
    103. {
    104. return this->str[index-1];
    105. }
    106. friend void show(const mystring str);
    107. };
    108. void show(const mystring s)
    109. {
    110. cout<
    111. cout<<"size = "<
    112. }
    113. int main()
    114. {
    115. mystring s("lamia");
    116. show(s);
    117. mystring s2("selane");
    118. show(s2);
    119. mystring s3=s2;
    120. show(s3);
    121. mystring s4=s+s2;
    122. show(s4);
    123. s2+=s;
    124. show(s2);
    125. return 0;
    126. }

  • 相关阅读:
    MapStruct简单入门
    信息系统项目管理师必背核心考点(五十六)配置控制委员会(CCB)的工作
    OceanBase Oracle 模式下系统视图权限导致的故障一例
    taro小程序开发、h5前端开发有什么不一样呢?
    多次声称不造车的华为,如今正在借别人的手造自己的车?
    Syntax Error: Error: Missing binary. See message above.
    一键生成大学、专业甚至录取概率,AI填报志愿卡这么神奇?
    JavaWeb三大组件之Listener------Listener详细讲解
    前后端分离项目,vue+uni-app+php+mysql电影院售票系统(H5移动项目) 开题报告
    基于FPGA的 图像边沿检测
  • 原文地址:https://blog.csdn.net/2201_75732711/article/details/132817361
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号