一个string类的简单实现案例

发布时间 - 2026-01-10 22:23:24    点击率:

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类的简单实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# string类的实现  # C# 为String类型增加方法详解  # 详解C++中实现继承string类的MyString类的步骤  # 探究C++中string类的实现原理以及扩展使用  # C++中的string类的用法小结  # 给大家  # 是一个  # 这是  # 希望能  # 这篇  # 小编  # 大家多多  # 返回值  # 类中  # 是为了  # char  # string  # str  # const  # length  # data  # cpp  # brush  # class  # public 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  如何在Windows虚拟主机上快速搭建网站?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  php json中文编码为null的解决办法  网页设计与网站制作内容,怎样注册网站?  QQ浏览器网页版登录入口 个人中心在线进入  详解Android中Activity的四大启动模式实验简述  如何挑选优质建站一级代理提升网站排名?  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何在万网自助建站中设置域名及备案?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  如何在搬瓦工VPS快速搭建网站?  Bootstrap整体框架之JavaScript插件架构  如何确保FTP站点访问权限与数据传输安全?  如何快速完成中国万网建站详细流程?  如何在IIS7中新建站点?详细步骤解析  如何选择PHP开源工具快速搭建网站?  如何用美橙互联一键搭建多站合一网站?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  如何在阿里云ECS服务器部署织梦CMS网站?  如何快速上传建站程序避免常见错误?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  如何在景安服务器上快速搭建个人网站?  Laravel如何使用Livewire构建动态组件?(入门代码)  音乐网站服务器如何优化API响应速度?  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  如何为不同团队 ID 动态生成多个独立按钮  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  佛山网站制作系统,佛山企业变更地址网上办理步骤?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  手机软键盘弹出时影响布局的解决方法