实现一个string类
实现要实现:构造,析构,拷贝构造,赋值的功能
1. 提供构造函数 string(), string(const string & str),string(const char * str),
2. 析构函数: ~ string()
3. 成员函数(重载赋值函数):string &operator=(const string & str); 利用已有的string对象赋值
string & operator=(const char * str);// 直接用字符串赋值用char * 实现;
(返回引用,返回对象本身。 传入参数const & 常量引用,传入本身不能改)
4. 成员函数(处理字符串的成员函数):
size_t size() const; //返回常量
void swap(string & str);//交换两个字符串
5. 成员函数(操作符重载):
。。。。
#include <iostream>
#include <utility>
#include<stdio.h>
#include <string.h>
using namespace std; class String{ private:
char * data_;
public:
size_t size()const
{
return strlen(data_);
}
const char * c_str() const{
return data_;
}
//无参的构造函数
String():data_(new char[])//初始化类的成员data_,为初始化列表的方式。
{
//初始化列表也可以表示为
// data_=new char[1];
*data_='\0';
}
//有参的构造函数
String(const char *str) :data_(new char[strlen(str)+])
// strlen(str)必须为常量;
{
strcpy(data_,str);
}
String(const String & s):data_(new char[s.size()+])
{
strcpy(data_,s.c_str());// 有一个值为const
} //析构函数
~String ()
{
delete[] data_;
} //函数返回引用返回的是对象本身
String& operator=(String s)
{
swap(data_,s.data_);
return *this;
} };
实现一个string类的更多相关文章
- C++自己实现一个String类
C++自己实现一个String类(构造函数.拷贝构造函数.析构函数和字符串赋值函数) #include <iostream> #include <cstring> using ...
- 关于如何来构造一个String类
今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其 ...
- 构造一个String类
#include "stdafx.h" #include<iostream> #include<string.h> using namespace std; ...
- C++学习之路(六):实现一个String类
直接贴代码吧,这段时间准备面试也正好练习了一下. class String { public: String(const char *str = ""); ~String(void ...
- 一个简单实现的string类
为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 和 CentOS Linux release 7.6.1810 (Core) 开发工具 ...
- (原)String类两种实例化的区别
String有两种实例化方式,一种是通过直接赋值的方式,另外一种是使用标准的new调用构造方法完成实例化. public class StringDemo { public static void m ...
- C++学习36 string类和字符串
C++大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型 string.string 类处理起字符串来会方便很多,完全可以代替C语言中的 char 数组或 char 指针. ...
- C++面试中string类的一种正确写法
C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...
- 反射消除String类对象的不可变特性
大家都知道,在JAVA中字符串一旦声明就不可改变,如果尝试修改字符串的内容,将会重新实例化一个新的字符串对象,这也是为了安全性和效率. 由于字符串在程序之中被大量使用,所以JAVA引入了一个字符串常量 ...
随机推荐
- java中父进程与子进程
http://blog.csdn.NET/seelye/article/details/8269705
- yield与递归的组合运用
- docker --Dockerfile--最小java环境
# AlpineLinux open jre 8FROM alpine:latest # Install cURLRUN echo -e "https://mirror.tuna.tsing ...
- bzoj 2460 [BeiJing2011]元素 (线性基)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2460 题意: 给你一堆矿石,矿石有a,b两种性质,取任意个矿石,满足取得的这些矿石a性质异或 ...
- 自学Zabbix11.6 Zabbix SNMP自定义OID
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix11.6 Zabbix SNMP自定义OID 为什么要自定义OID? 前面已经讲过 ...
- Shell基础知识(一)
教程链接:shell从入门到入门 这个网站还有其他教程,可以尝试下看看. 普及类文章:bash/cmd/dos之间有什么区别与联系 >> bash是Linux下的一个shell应用程序 ...
- bzoj1002/luogu2144 轮状病毒 (dp)
给周围的点编号1到n 我们设f[i]为(1到i和中间点)连成一个联通块的情况数,那么有$f[i]=\sum{f[i-j]*j}$,就是从i-j+1到i里选一个连到中心,然后再把i-j+1到i连成链 但 ...
- Android编程心得-在Assets文件夹中放入.sql文件实现创建SQlite表的操作
当我们在使用SQLiteOpenHelper时,经常使用db.execSQL(String sql)方法写入对应语句实现创建表的操作,这样的确可以实现业务逻辑.与此同时还有一种更灵活的方法,从asse ...
- Codeforces 382 D Permutations
题目大意: 给出一张二分图,这张二分图完美匹配的个数是奇数,求删掉第$i(1<=i<=m)$条边后完美匹配个数的奇偶性. 设这张图的邻接矩阵为$A$,那么完美匹配的个数为$A$的积和式,即 ...
- c#中用lua脚本执行redis命令
直接贴出代码,实现执行lua脚本的方法,用到的第三方类库是 StackExchange.Redis(nuget上有) 注:下面的代码是简化后的,实际使用要修改, using System; using ...