C++实现String类实例代码
发布时间 - 2026-01-11 00:32:37 点击率:次C++实现String类实例代码

这是一道十分经典的面试题,可以短时间内考查学生对C++的掌握是否全面,答案要包括C++类的多数知识,保证编写的String类可以完成赋值、拷贝、定义变量等功能。
#include<iostream>
using namespace std;
class String
{
public:
String(const char *str=NULL);
String(const String &other);
~String(void);
String &operator =(const String &other);
private:
char *m_data;
};
String::String(const char *str)
{
cout<<"构造函数被调用了"<<endl;
if(str==NULL)//避免出现野指针,如String b;如果没有这句话,就会出现野
//指针
{
m_data=new char[1];
*m_data=''/0'';
}
else
{
int length=strlen(str);
m_data=new char[length+1];
strcpy(m_data,str);
}
}
String::~String(void)
{
delete m_data;
cout<<"析构函数被调用了"<<endl;
}
String::String(const String &other)
{
cout<<"赋值构造函被调用了"<<endl;
int length=strlen(other.m_data);
m_data=new char[length+1];
strcpy(m_data,other.m_data);
}
String &String::operator=(const String &other)
{
cout<<"赋值函数被调用了"<<endl;
if(this==&other)//自己拷贝自己就不用拷贝了
return *this;
delete m_data;//删除被赋值对象中指针变量指向的前一个内存空间,避免
//内存泄漏
int length=strlen(other.m_data);//计算长度
m_data=new char[length+1];//申请空间
strcpy(m_data,other.m_data);//拷贝
return *this;
}
void main()
{
String b;//调用构造函数
String a("Hello");//调用构造函数
String c("World");//调用构造函数
String d=a;//调用赋值构造函数,因为是在d对象建立的过程中用a来初始化
d=c;//调用重载后的赋值函数
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C++实现String类
# C++实现String类详解
# C++如何实现String类
# c++中string类成员函数c_str()的用法
# C++中将string类型转化为int类型
# 探究C++中string类的实现原理以及扩展使用
# 详解C++的String类的字符串分割实现
# 代码分析c++中string类
# C++中的string类的用法小结
# C++中string类的常用方法实例总结
# 这是
# 就会
# 是在
# 这句话
# 时间内
# 希望能
# 如果没有
# 等功能
# 谢谢大家
# 面试题
# iostream
# include
# lt
# gt
# public
# std
# namespace
# String
# pre
# br
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Laravel怎么连接多个数据库_Laravel多数据库连接配置
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Python进程池调度策略_任务分发说明【指导】
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Laravel观察者模式如何使用_Laravel Model Observer配置
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
如何快速搭建高效可靠的建站解决方案?
Python高阶函数应用_函数作为参数说明【指导】
再谈Python中的字符串与字符编码(推荐)
文字头像制作网站推荐软件,醒图能自动配文字吗?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
网站建设要注意的标准 促进网站用户好感度!
如何在云虚拟主机上快速搭建个人网站?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
网站制作软件免费下载安装,有哪些免费下载的软件网站?
Laravel怎么实现验证码(Captcha)功能
Laravel如何实现多对多模型关联?(Eloquent教程)
香港网站服务器数量如何影响SEO优化效果?
BootStrap整体框架之基础布局组件
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
米侠浏览器网页背景异常怎么办 米侠显示修复
,在苏州找工作,上哪个网站比较好?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
七夕网站制作视频,七夕大促活动怎么报名?
Python文件异常处理策略_健壮性说明【指导】
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
深圳网站制作平台,深圳市做网站好的公司有哪些?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
EditPlus中的正则表达式实战(6)
JS碰撞运动实现方法详解
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何快速搭建支持数据库操作的智能建站平台?
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
中山网站制作网页,中山新生登记系统登记流程?
常州企业网站制作公司,全国继续教育网怎么登录?
如何获取免费开源的自助建站系统源码?
,怎么在广州志愿者网站注册?
如何快速搭建二级域名独立网站?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)

