2017,尝试一切,坚持下去!

之前面试遇到过这个题,这么基础的竟然不会写,丢人呀~ 前几天偶然看见某神的博文,基础的1-7仔细看了两遍,默写基本代码,练到手熟!
大神的博文:(http://blog.csdn.net/han_xiaoyang/article/details/10896159#comments)

题:已知类String的原型为:

class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
请编写String的上述4 个函数。

// String 的析构函数   String : : ~String(void)
{   delete [] m_data;
//  由于m_data是内部数据类型,也可以写成 delete m_data;   }  
// String 的普通构造函数                 String : : String(const char *str)      // 6 分
{   if(str==NULL)                             {   m_data = new char[1];    // 若能加 NULL 判断则更好   *m_data = ‘ \ 0 ’ ;                         }                                            else   {   int length = strlen(str);              m_data = new char[length+1];  //  若能加 NULL 判断则更好         strcpy(m_data, str);                   }
}     
//  拷贝构造函数   String::String(const String &other)   // 3 分   {    int length = strlen(other.m_data);      m_data = new char[length+1];      //  若能加 NULL 判断则更好       strcpy(m_data, other.m_data);
}   
//  赋值函数   String & String::operate =(const String &other)    // 13分   {    // (1) 检查自赋值                     // 4 分   if(this ==  &other)   return *this;   // (2)  释放原有的内存资源            // 3 分   delete []  m_data;   // (3 )分配新的内存资源,并复制内容 // 3 分   int length = strlen(other.m_data);     m_data = new char[length+1];         // 若能加 NULL 判断则更好   strcpy(m_data, other.m_data);   // (4 )返回本对象的引用            // 3 分   return *this;
}    

结构体构造和析构函数相关推荐

  1. c++中的构造数据类型----结构体

    c++中的构造数据类型----结构体 构造数据类型: 无论是基本数据类型还是数组类型都仅仅描述了事物某一方面的特性, 但是, 一种事物往往具有多方面的属性, 如一个同学有学号, 姓名, 性别, 年龄等 ...

  2. 【唐老狮】C#——结构体和类的区别

    [结构体和类的区别] 结构体是值类型,类是引用类型 结构体存在栈中,类存在堆中 结构体成员不能使用protected访问修饰符,而类可以 结构体成员变量申明不能指定初始值,而类可以 结构体不能申明无参 ...

  3. 【知识积累】C#中结构体和类的区别

    [类]     类是对现实生活中一类具有共同特征的事物的抽象.类的实质是一种数据类型,类似于int.char等基本类型,不同的是它是一种复杂的数据类型.因为它的本质是类型,而不是数据,所以不存在于内存 ...

  4. C语言结构体对齐的不足

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105065657 C ...

  5. 【C++】struct结构体/构造函数

    结构体/构造函数例程 这是我在网上看的,一个struct中的变量的初始化方式有以下好几种: #include <iostream> #include <string> #inc ...

  6. c++ 结构体和vector进行lower_bound和upper_bound

    总述: 介绍结构体数组和包含结构体的vector怎么样使用lower_bound进行二分查找,upper_bound同理. 前提: lower_bound:返回数组中第一个大于等于该元素的下标,int ...

  7. STL之lower_bound,upper_bound二分查找函数 结构体

    codeforces上的代码是开放的,常常就能看到本渣与大神们的差距 比如二分查找... 1.在数组中,找出第一个4所在位置 输入: 14 4 1 2 2 3 4 4 4 4 5 6 7 9 9 10 ...

  8. java中的类跟结构体_C#中的结构体与类的区别

    经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字str ...

  9. C#类与结构体的区别

    C#中类(class)与结构体(stract)的区别: 1.类是引用类型,结构体是值类型: 2.结构体不支持继承,但可以实现接口,类即支持继承也能实现接口: 3.结构体中不可以声明无参的构造函数: 4 ...

最新文章

  1. Science:纽约西奈山医学院房刚组定量分析真核生物DNA 6mA解析细菌污染的影响...
  2. 单片机can通信可以接多少个设备_51单片机的多机并行通信系统应用
  3. mysql error 1442_MySQL错误代码为err[1442]的解决总结_MySQL
  4. 090_块元素行内元素行内块元素空元素
  5. 秒杀系统的架构解决之道
  6. 面试题—Mysql篇
  7. while循环语句用法_EXCEL退出DO LOOP循环语句|until、while
  8. 实战解析丨如何对Mysql连接请求的tcpdump内容进行分析
  9. 解决:用PivotGridControl 与 chartControl 配合使用,Series最大只显示10条
  10. 【Selenium2】【Shell】
  11. ffplay播放flv文件没有声音的解决方法
  12. JS实现将文件和base64的相互转换
  13. ssh远程连接windows
  14. python扇贝每日一句api_【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)...
  15. 逍遥模拟器上传服务器文件,逍遥模拟器后台操作
  16. 非常精妙的主副电源自动切换电路,并且“零”压降
  17. 阿里云ACP云计算错题集71-100
  18. apicloud加java,【APICloud】App开发中加入系统分享功能案例源码分享
  19. Win 7的50个使用小诀窍
  20. 网络空间搜索FOFA

热门文章

  1. Mathematics Subject Classification (MSC)
  2. [代码审计]Weiphp5.0 前台文件任意读取分析
  3. 『递推』[AGC043D] Merge Triplets
  4. Iphone自带的邮箱 每次发完邮件在已发送里会显示重复发送了两封
  5. 移动磁盘已用空间0字节要如何办啊
  6. c语言oj数据通过,OJ输入数据的处理
  7. 数字北京城,航行在联通2000M的“大运河”
  8. matlab力学实验,Matlab在力学课程课堂教学和虚拟实验中的应用
  9. TCP三次握手常见问题
  10. 入门android开发