类String的构造函数、析构函数和赋值函数

一、类String的原型为:

 1 class String
 2 {
 3 public:
 4     String(const char *str = NULL);             //普通构造函数
 5 
 6     ~String(void);                              //析构函数
 7 
 8     String(const String &other);                //拷贝构造函数
 9 
10     String & operator=(const String & other);   //赋值函数
11 
12 private:
13     char *m_pData;
14 };

二、类String的普通构造函数

 1 String::String(const char *str)
 2 {
 3     if(str == NULL)
 4     {
 5         m_pData  = new char[1];
 6         *m_pData = '\0';
 7     }
 8     else
 9     {
10         int length = strlen(str);
11         m_pData = new char[length + 1];
12         strcpy(m_pData, str);
13     }
14 }

三、类String的析构函数

1 String::~String(void)
2 {
3     //由于m_pData是内部数据类型,也可以写成 delete m_pData;
4     delete [] m_pData;
5 }

四、类String的拷贝构造函数

1 String::String(const String &other)
2 {
3     int length = strlen(other.m_pData);
4     
5     m_pData = new char[length + 1];
6     
7     strcpy(m_pData, other.m_pData);
8 }

五、类String的赋值函数

 1 String & String::operator=(const String &other)
 2 {
 3     if(this == &other)                   //检查自赋值
 4         return *this;
 5 
 6     delete [] m_pData;                   //释放原来的资源
 7 
 8     int length = strlen(other.m_pData);  //分配新的资源并分配控件
 9     m_pData = new char[length + 1];
10     strcpy(m_pData, other.m_pData);
11 
12     return *this;                        //返回自身的引用
13 }

 

转载于:https://www.cnblogs.com/Dreamcaihao/archive/2013/05/21/3091662.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

A的大小是多少c语言中,C/C+中字符(A)的大小

C/C中字符(A)的大小C和C中字符的大小是多少&#xff1f;据我所知&#xff0c;C和C中字符的大小都是1字节。#include int main(){printf("Size of char : %d\n",sizeof(char));return 0;}#include int main(){std::cout<return 0;}没有任何意外&#xff0c;它们都给…

[资源分享] 推荐两本电子书

又到了一周一次的资源和教程推荐。这周会推荐两本电子书&#xff0c;希望大家不只是收藏不阅读系列哦&#xff01;1. 《模式识别与机器学习》&#xff08;PRML&#xff09;免费开放下载第一本推荐的书籍就是 AI 领域里面一直都非常有名的书籍--《模式识别与机器学习》&#xff…

程序员需要知道的8个Linux命令

每个程序员&#xff0c;在职业生涯的某个时刻&#xff0c;总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家&#xff0c;我的意思是&#xff0c;当面对linux命令行任务时&#xff0c;你应该能很熟练的完成。事实上&#xff0c;学会了下面8个命令&a…

[资源]181个Python开源项目分享!

在基于 GitHub 2018 年 Octoverse 报告中&#xff0c;简要分析了 Github 中哪些编程语言是最佳代表或是趋势。有许多方法可以衡量编程语言的流行程度。 在Octoverse报告中&#xff0c;GitHub使用了&#xff1a;公共和私有存储库中贡献者使用的主要语言以主要语言创建和标记的存…

c语言如何编写建立tex文件,用LaTeX写C语言实验报告1:工具的准备

前言要说到我第一次知道TeX&#xff0c;那是因为我们C语言老师上课聊天的时候偶然提到说她写文档什么的比较喜欢用TeX&#xff0c;而不是word&#xff0c;这就激起了我的好奇心。于是回去之后立马百度&#xff0c;发现TeX确实是个好东西&#xff0c;很符合我们程序员的思维&…

[html] 怎样避免让用户看到长时间的白屏?

[html] 怎样避免让用户看到长时间的白屏&#xff1f; 我觉得&#xff0c;实际解决办法需要结合用户体验和性能优化这两个指标来说&#xff1a;1、用户体验可以使用骨架屏来减少页面白屏&#xff0c;骨架屏也具有更好的loading效果。2、假如1个页面里面有很多很多网络请求&…

[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(下)

这是本文的最后一部分内容了&#xff0c;前两部分内容的文章&#xff1a; [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上&#xff09;[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中&#xff09; 以及原文的地址&#xff1a; http://bamos.github.io…

SQL Server 限制IP登陆

一、背景 在MySQL的mysql.User表保存了登陆用户的权限信息&#xff0c;Host和User字段则是关于登陆IP的限制。但是在SQL Server没有这样一个表&#xff0c;那SQL Server有什么办法可以实现类似的安全控制的功能呢&#xff1f; SQL Server 包括三种常规类型的触发器&#xff1a;…

[资源]基于 Pytorch 的 TorchGAN开源了!

之前推荐过一个基于 TensorFlow 的 GAN 框架–谷歌开源的 GAN 库–TFGAN。 而最近也有一个新的 GAN 框架工具&#xff0c;并且是基于 Pytorch 实现的&#xff0c;项目地址如下&#xff1a; https://github.com/torchgan/torchgan 对于习惯使用 Pytorch 框架的同学&#xff0…

c语言iso校验算法,模式识别c语言ISODATA算法.doc

模式识别c语言ISODATA算法.doc下载提示(请认真阅读)1.请仔细阅读文档&#xff0c;确保文档完整性&#xff0c;对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档&#xff0c;不会出现我们的网址水印。3、该文档所得收入(下载内容预览)归上传者、原创作者&…

大数据还是小数据

最近读了大数据时代一书&#xff0c;对大数据做了一个很好的介绍。同时看到了一篇很有意思的文章Most data isn’t “big,” and businesses are wasting money pretending it is这篇文章说的是绝大部分的数据都不是“大”数据&#xff0c;如果公司假装它是“大”数据来处理的话…

2018 总结 2019 展望

今天是 2018 年的最后一天了&#xff0c;照例还是需要对今年做个总结的&#xff01;2018 总结1. 工作今年其实是分两个阶段&#xff0c;上半年还是研究生的最后半年&#xff0c;努力的赶完毕业论文&#xff0c;顺利通过了盲审和毕业答辩&#xff0c;也算是给自己的学业生涯画上…

android开机logo制作工具,Android 开机Logo制作

1.UBoot logo和kernel logo找美工制作好指定格式的bmp图片替换到相应的目录就可以了。注意bmp的位深和分辨率2.android logo文件desc.txt的内容格式如下面的例子所示&#xff1a;960 540 24p 1 0 part1p 0 10 part2第一行的三个数字分别表示开机动画在屏幕中的显示宽…

程序员的数学笔记1--进制转换

最近在学习极客时间的课程–程序员的数学基础课。 课程地址&#xff1a;https://time.geekbang.org/column/intro/143 这是第一节课程的学习笔记–有关进制的转换。 二进制 什么是二进制 十进制计数是使用 10 作为基数&#xff0c;例如一个数字&#xff1a;2871&#xff0c…

android层级关系图,画出 View 的层级 3D 图和树形图来分析层级关系

HierarchyLayout 介绍HierarchyLayout是一个自定义的ViewGroup工具&#xff0c;用于分析视图的层级关系&#xff0c;并画出层级树的结构图和可交互的3D 层级View:HiearchyLayout的静态图&#xff0c;实际是可随手势改变 3D 形态的。hierarchyView.jpeghierarchyViewNode.jpeghi…