码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 23062C++&QTday4


    仿照string类,完成myString 类

    代码:

    1. #include
    2. #include
    3. using namespace std;
    4. class myString
    5. {
    6. private:
    7. char *str; //记录c风格的字符串
    8. int size; //记录字符串的实际长度
    9. public:
    10. //无参构造
    11. myString():size(10)
    12. {
    13. str = new char[size]; //构造出一个长度为10的字符串
    14. strcpy(str,""); //赋值为空串
    15. }
    16. //有参构造
    17. myString(const char *s) //string s("hello world")
    18. {
    19. size = strlen(s);
    20. str = new char[size+1];
    21. strcpy(str, s);
    22. }
    23. //拷贝构造
    24. myString(const myString &other)
    25. {
    26. size=other.size;
    27. str= new char[size];
    28. strcpy(str,other.str);
    29. }
    30. //析构函数
    31. ~myString()
    32. {
    33. delete[] str;
    34. }
    35. //拷贝赋值函数
    36. myString & operator=(const myString &other)
    37. {
    38. if(this != &other) //确定不是自己给自己赋值
    39. {
    40. this->size = other.size;
    41. //判断原来指针空间释放被清空
    42. if(this->str != NULL)
    43. {
    44. delete this->str;
    45. }
    46. this->str = new char(*other.str);
    47. }
    48. cout<<"拷贝赋值函数"<
    49. return *this; //返回自身引用
    50. }
    51. //判空函数
    52. bool string_empty()
    53. {
    54. return size==0;
    55. }
    56. //size函数
    57. unsigned long long int string_size()
    58. {
    59. return strlen(str);
    60. }
    61. //c_str函数
    62. const char* c_str(const myString s1)
    63. {
    64. char *p=new char[s1.size+1];
    65. strcpy(p,s1.str);
    66. return p;
    67. }
    68. //at函数
    69. char &at(int pos)
    70. {
    71. if(pos>=0&&pos<this->size)
    72. {
    73. return str[pos];
    74. }
    75. else
    76. {
    77. cout<<"数据输入错误"<
    78. return str[0];
    79. }
    80. }
    81. //加号运算符重载
    82. const myString operator+ ( const myString &R)const
    83. {
    84. myString s;
    85. s.size = this->size + R.size;
    86. strcpy(s.str,this->str);
    87. strcat(s.str,R.str);
    88. return s;
    89. }
    90. //加等于运算符重载
    91. myString & operator+=(const myString &R)
    92. {
    93. this->size += R.size;
    94. strcat(this->str,R.str);
    95. return *this; //返回自身的引用
    96. }
    97. //关系运算符重载(>)
    98. bool operator>(const myString &R)const
    99. {
    100. if(strcmp(this->str,R.str)>0)
    101. {
    102. return 1;
    103. }
    104. else
    105. {
    106. return 0;
    107. }
    108. }
    109. //中括号运算符重载
    110. char & operator[](int index)
    111. {
    112. return this->str[index];
    113. }
    114. };
    115. int main()
    116. {
    117. myString s1("hello");
    118. string s2="world";
    119. string s3="war";
    120. myString s4("world");
    121. cout<string_size()<
    122. cout<at(2)<
    123. s2+=s3;
    124. cout<
    125. cout<
    126. if(s1 > s4) //调用关系运算符重载函数
    127. {
    128. cout<<"yes"<
    129. }else
    130. {
    131. cout<<"no"<
    132. }
    133. return 0;
    134. }

    运行结果:

    思维导图

     

  • 相关阅读:
    node---模块
    JSP 中医知识管理系统myeclipse开发sql数据库BS模式java编程网页结构
    荐书丨《实验心理学指导手册》:如何快速掌握一篇文献中的实验范式
    ARCGIS之成片区开发方案报备坐标txt格式批量导出工具(定制开发版)
    Hadoop+Hive数据分析综合案例
    知识整理:1802907-99-8,Desthiobiotin-PEG4-Alkyne生物素类似物
    217页企业大数据能力平台建设技术方案
    金九银十,Java 程序员面试历程(附字节,阿里,百度,网易,美团等面经)
    fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
    Go通过cobra快速构建命令行应用
  • 原文地址:https://blog.csdn.net/cwj442257772/article/details/132817025
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号