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组件介绍之四)