一个string类的简单实现案例

 更新时间:2017年01月09日 09:14:41   投稿:jingxian  
下面小编就为大家带来一篇一个string类的简单实现案例。小编觉得挺不错的现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作

class String
{
	public:
		String()
		{
			data = new char[1];  //这里为什么使用new char[1]呢,虽然是一个字符,这是为了和析构函数保持对称,因为在别的构造函数中使用的char[]
			data[0]='\0';
			length = 0;
		}
		String(const char* str)
		{
			length = strlen(str);
			data = new char[length+1];
			strcpy(data,str);
			data[length]='\0';
		}
		String(const char* str,int n)
		{
			length = n;
			data = new char[n+1];
			strncpy(data,str,n);
			data[length] ='\0';
		}
		String(const String& src) //拷贝构造函数 也就是复制构造函数
		{
			length = src.length;
			data = new char[length+1];
			strcpy(data,src.data);
		}
		String& operator=(const String& src) //赋值构造函数
		{
			if(this == &src)
				return *this;
			delete [] data;
			data = new char[src.length+1];
			strcpy(data,src.data);
			return *this;
		}
		String& operator=(const char* src) //另一种的赋值构造函数
		{
			delete [] data;
			length = strlen(src);
			data = new char[length+1];
			strcpy(data,src);
			return *this;
		}
		char& operator[](int n)
		{
			return data[n];
		}
		const char& operator[](int n) const  //对于const成员函数 最好就是返回const的引用,这样是为了避免返回值被修改
		{
			return data[n];
		}
	friend	ostream& operator<<(ostream& os,const String& st); 
		 
		~String()
		{
			delete [] data;	
		}
	private:
		char* data;
		int length;	
};
ostream& operator<<(ostream& os,const String& st)
{
   os<<st.data;
  return os;
}

以上这篇一个string类的简单实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 图文详解c/c++中的多级指针与多维数组

    图文详解c/c++中的多级指针与多维数组

    多维数组与多级指针是初学者经常感觉迷糊的一个地方。超过二维的数组和超过二级的指针其实并不多用。但只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单。
    2016-08-08
  • C++中声明、定义、初始化、赋值区别介绍

    C++中声明、定义、初始化、赋值区别介绍

    在 C++ 中,声明、定义、初始化、赋值是变量的四个基本操作,很多朋友不清楚他们之间有什么区别,今天通过本文给大家介绍下C++中声明、定义、初始化、赋值区别,感兴趣的朋友一起看看吧
    2023-05-05
  • Visual Studio2022下Opencv的配置图文教程

    Visual Studio2022下Opencv的配置图文教程

    本文主要介绍了Visual Studio2022下Opencv的配置图文教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • C语言简明分析选择结构和循环结构的使用

    C语言简明分析选择结构和循环结构的使用

    C语言条件控制语句选择结构,是属于计算机的语言编辑,有在C语言条件控制中的语句选择结构的存在,即是C语言条件控制语句选择结构,循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构
    2022-04-04
  • QT5.12.5移植到ARM平台下的方法步骤

    QT5.12.5移植到ARM平台下的方法步骤

    本文主要介绍了QT5.12.5移植到ARM平台下的方法步骤,包括修改配置文件、代码修改以及测试运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • c语言线程终止练习示例

    c语言线程终止练习示例

    这篇文章主要介绍了c语言线程终止练习示例,需要的朋友可以参考下
    2014-04-04
  • Matlab实现获取文件夹下所有指定后缀的文件

    Matlab实现获取文件夹下所有指定后缀的文件

    这篇文章主要为大家详细介绍了Matlab如何获取文件夹下所有指定后缀的文件(包含子文件夹),文中的示例代码讲解详细,感兴趣的可以尝试一下
    2022-11-11
  • C++实现LeetCode(107.二叉树层序遍历之二)

    C++实现LeetCode(107.二叉树层序遍历之二)

    这篇文章主要介绍了C++实现LeetCode(107.二叉树层序遍历之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C/C++中智能指针的用法详解

    C/C++中智能指针的用法详解

    C/C++中,指针是一个非常重要的概念,其强大但也麻烦,麻烦之处就在于一旦你申请了内存,那就必须要手动去释放内容,否则就会造成内存泄漏。所以智能指针的作用就是防止我们麻痹大意忘记释放内存,帮助我们管理内存的,本文就来聊聊智能指针的用法
    2023-01-01
  • C++ 中的类型详细

    C++ 中的类型详细

    这篇文章主要介绍了C++ 中的类型,C++的类型很复杂,往往一个类型匹配错误就会导致程序报错,本篇主要讲解一些常用类型的概念以及细节,需要的朋友可以参考一下,希望对你有所帮助
    2021-12-12

最新评论