实现以一个简洁版的string类

浅拷贝:

分析:如果在赋值运算时不使用引用会造成程序崩溃,在调用复制构造时是s1的_str会出现一个随机值,本来应该是被析构过的应为空,所以在测试时出了作用域再去析构时就会出现错误。

时间: 2024-10-13 01:28:21

实现以一个简洁版的string类的相关文章

1——自我实现一个简洁版的String类

在C++中有C没有的string字符串类型,string类型的数据其实是一个指向字符串首地址的指针变量,因此在string类的默认成员函数拷贝构造和赋值运算符的重载就会涉及到深浅拷贝的问题,一不小心要么就是内存泄露要么就是多次释放同一块空间导致程序崩溃,下面就来模拟实现一个简洁版的String类: 既然是指向一个字符串的指针,因此类的成员变量就需要有一个char*类型的指针: #include <iostream> #include <string.h> using namespa

实现一个简洁版的String类

浅拷贝: 深拷贝: 注意事项:在浅拷贝中复制构造必须构造一个匿名对象在进行交换,在赋值操作符中传参时不能使用引用.

实现简洁版的string类

#include<iostream> using namespce std; class String { public: String() :_str(new char[1]) { _str='\0'; } String(const char* str)//一个字符串的拷贝 :_str(new char[strlen(str)+1] { strcpy(_str,str); } String (const String&str)//一个对象的拷贝 :_str(NULL) { Strin

【C++】实现一个简洁版的class String

//实现一个简洁版的class String #include <iostream> #include <string.h> using namespace std; class String { public: String() { _str = new char[1]; _str[0] = '\0'; } String(const char *str) { _str = new char[strlen(str) + 1]; strcpy(_str, str); } String

一个简单实现的string类

为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 开发工具:Visual Studio 2015 CMyString类的头文件CMyString.h 1 #include <iostream> 2 3 #ifndef __C_MY_STRING__ 4 #define __C_MY_STRING__ 5 6 class CMyString 7 { 8 public: 9 //默认构造函数 10 CMyString(); 11 //

造轮子:新建一个属于自己的String类

练习造轮子,新建一个属于自己的MyString类 首先来开启检测内存泄漏的函数 在main里添加 _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); 开启内存泄漏检测 int main() { _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); int *p = new int; return

码农的视角:马云菜鸟物流的一个简洁版实现

龟兔赛跑的物流玄机 80后的我们大都接受了一个励志的寓言故事:龟兔赛跑.这个寓言有很多版本,有的说兔子太骄傲,在比赛的时候睡大觉,结果被乌龟给拼命地赢了.有的说,乌龟很聪明,在比赛的路上不满了同伴,每个同伴看到兔子来,就开始跑,结果乌龟聪明地赢了兔子. 龟兔赛跑的第二个版本,充满了物流玄机:假如一个用户在XX地方买了一个商品,那什么样才能更快地把商品送到该用户手中.用龟兔聪明的版本,就是在离用户近的地方,先合理准备着该商品. 其实这个从技术的角度来看可以说是CACHE,或者说CDN,其架构图如下

实现一个简洁版的智能指针

//智能指针可以自动销毁,用引用计数技术实现 #include<iostream> using namespace std; template<class T> class SmartPtr { protected:                  T* _ptr;                  size_t* _cout;                  void clear()                 {                             

自己动手写Java String类

很早想造个轮子了,听说不想造轮子的程序员不是好程序员,用惯了Apache的众多开源项目,却没看过开源一句代码.最近看了几篇卖焦虑的文章之后,突然变得慌张起来,于是在百忙之中难得一点闲第一次打开了JDK的源码包.初读:晦涩难懂,3千多行代码,全英文注释,有一些陌生的语法和调用陌生的类足矣吓退一个中年程序员.再度:只读个轮廓,这String.class也就是注释写的全写得多,核心代码不多嘛!三读:哇喔,整个String类核心变量就一个char[]数组嘛: private final char val