bigThree,注意拷贝构造函数的写法。

  1. #ifndef __MYSTRING__
  2. #define __MYSTRING__
  3.  
  4. class String
  5. {
  6. public:
  7. String(const char* cstr=);
  8. String(const String& str);
  9. String& operator=(const String& str);
  10. ~String();
  11. char* get_c_str() const { return m_data; }
  12. private:
  13. char* m_data;
  14. };
  15.  
  16. #include <cstring>
  17.  
  18. inline
  19. String::String(const char* cstr)
  20. {
  21. if (cstr) {
  22. m_data = new char[strlen(cstr)+];
  23. strcpy(m_data, cstr);
  24. }
  25. else {
  26. m_data = new char[];
  27. *m_data = '\0';
  28. }
  29. }
  30.  
  31. inline
  32. String::~String()
  33. {
  34. delete[] m_data;
  35. }
  36.  
  37. inline
  38. String& String::operator=(const String& str)
  39. {
  40. if (this == &str)
  41. return *this;
  42.  
  43. delete[] m_data;
  44. m_data = new char[ strlen(str.m_data) + ];
  45. strcpy(m_data, str.m_data);
  46. return *this;
  47. }
  48. //考虑异常安全性的拷贝赋值运算符
  49. inline
  50. String& String::operator=(cosnt String& str){
  51. if(this != &str){
  52. String strTmp(str);
  53. char* pTmp = str.m_data;
  54. strTmp.m_data = m_data;
  55. m_data = pTmp;
  56. }
  57. return *this;
  58. }
  59.  
  60. inline
  61. String::String(const String& str)
  62. {
  63. m_data = new char[ strlen(str.m_data) + ];
  64. strcpy(m_data, str.m_data);
  65. }
  66.  
  67. #include <iostream>
  68. using namespace std;
  69.  
  70. ostream& operator<<(ostream& os, const String& str)
  71. {
  72. os << str.get_c_str();
  73. return os;
  74. }
  75.  
  76. #endif

string类的具体实现的更多相关文章

  1. 标准库String类

    下面的程序并没有把String类的所有成员方法实现,只参考教程写了大部分重要的成员函数. [cpp] view plain copy #include<iostream> #include ...

  2. 自己实现简单的string类

    1.前言 最近看了下<C++Primer>,觉得受益匪浅.不过纸上得来终觉浅,觉知此事须躬行.今天看了类类型,书中简单实现了String类,自己以前也学过C++,不过说来惭愧,以前都是用C ...

  3. C++ string类的实现

    c++中string类的实现 今天面试被考到了, 全给忘记了!!!   //string类的实现 #include <iostream> #include <string.h> ...

  4. String类的功能

    String类              标红的为较少出现的 1.判断功能 boolean equals(Object obj) :比较字符串内容是否相同,区分大小写 boolean equalsIg ...

  5. java基础复习:final,static,以及String类

    2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...

  6. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  7. 05_整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明

    Question: 整理String类的Length().charAt(). getChars().replace(). toUpperCase(). toLowerCase().trim().toC ...

  8. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  9. String类常用方法

    1.String类的特点,字符串一旦被初始化就不会被改变. 2.String对象定义的两种方式 ①String s = "affdf";这种定义方式是在字符串常量池中创建一个Str ...

  10. 运用String类实现一个模拟用户登录程序

    package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...

随机推荐

  1. DNS辅助

    DNS服务原理详解 DNS:Domain Name Service,域名解析服务 监听端口:udp/53,tcp/53 应用程序:bind 根域:. 一级域: 组织域:.com, .org, .net ...

  2. js加密(四)landChina

    1. url:https://www.landchina.com/default.aspx?tabid=226 2. target: 3. 简单分析 3.1 打开fiddler和chorme无痕浏览器 ...

  3. vue中子组件调用父组件里面的数据和方法 父组件调用子组件的数据和方法

    1.子组件直接调用父组件的数据和方法 在父组件father,vue <template> <div> <!-- 父组件里面的数据 --> <p>父组件里 ...

  4. Java 动态代理实现

    1.依赖 java.lang.reflect.Proxy - 提供了静态方法去创建动态代理类的实例: Interface InvocationHandler - 一个代理实例调用处理程序实现的接口 2 ...

  5. 【10】DP青蛙跳台阶

    一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1 ...

  6. vscode生成文件头注释(python)

    文件→首选项→用户代码片段→选python 在大括号内添加如下内容: "Print infomation": { "prefix": "prelog& ...

  7. javascipt——jQuery

    1.首先需要导入jQuery1.12.4.js文件,把文件和当前目录放同一目录下.在<body>中写上<script scr = 'jQuery1.12.4.js'><s ...

  8. C++ explicit的作用

    explicit作用: 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使用注意事项: * e ...

  9. wordpress 修改默认分页条数

    哎,终于快做完了,今天弄了弄分页,真是网上扒的模板太高级了,把分页和导航的css和js冲突了,终于解决了, 然后有一个模板是三和一排显示的,其他的是单挑显示的,它默认10条,我寻思改成9条,找了半天, ...

  10. wordpress 不用插件添加友情链接

    哎,也不知道为啥,网上说的那个link manager这个插件死活找不到啊, 找了一个类似的,但是不是,这么多的英文看了好几遍才发现不是 然后从大神哪里找到一个好方法 在你用的那个主题的functio ...