开发者社区> xinxinitblog> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C++面试之 类string的构造函数、拷贝构造函数和析构函数

简介: 编写类String 的构造函数,析构函数,拷贝构造函数和赋值函数 class String { public: String(const char *str=NULL);//构造函数 String(const String &other);//拷贝构造函数 ...
+关注继续查看

编写类String 的构造函数,析构函数,拷贝构造函数和赋值函数

class String 
{
public:
    String(const char *str=NULL);//构造函数
    String(const String &other);//拷贝构造函数
    ~String(void);//析构函数
    String& operator=(const String &other);//等号操作符重载
    ShowString();
private:
    char *m_data;//指针
};

String::~String()
{
  delete[] m_data;//析构函数,释放地址空间
}
String::String(const char *str)
{
    if (str==NULL)//当初始化串不存在的时候,为m_data申请
    {
       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(const String &other)//拷贝构造函数
{
    int length = strlen(other.m_data);
    m_data = new char[length+1];
    strcpy(m_data,other.m_data);
}

String& String::operator=(const String &other)
{
    if (this==&other)
    {
        return *this;
    }
    delete []m_data;
    int length = strlen(other.m_data);
    m_data=new char[length+1];
    strlen(m_data,other.m_data);
    return *this;
}

注意:
1.拷贝构造函数和等号操作符重载函数参数用“&”表示深拷贝。深拷贝和浅拷贝也是一个重要的知识点.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java面试:有关String类
1.String对象创建的两种方式 简述一下两种String对象创建的方式区别
0 0
前端面试那些事【dt/dd、audio、onerror、标签、类、ID选择器、伪类选择器......
前端面试那些事【dt/dd、audio、onerror、标签、类、ID选择器、伪类选择器......
0 0
Python面试:类的特殊方法
Python面试:类的特殊方法
0 0
【面试高频题】难度 1.5/5,脑筋急转弯类模拟题
【面试高频题】难度 1.5/5,脑筋急转弯类模拟题
0 0
String 类的常用方法都有那些?面试篇(第十天)
String 类的常用方法有:indexOf():返回指定字符的索引、charAt():返回指定索引处的字符、replace():字符串替换、trim():去除字符串两端空白、split():分割字符串,返回一个分割后的字符串数组等,本文带大家具体了解这些方法。
0 0
java 中操作字符串都有哪些类?它们之间有什么区别?面试篇(第七天)
String:对字符串不进行重复操作时选择用String。 StringBuilder:在单线程中对字符串进行重复操作时选择用StringBuilder。 StringBuffer:在多线程中对字符串进行重复操作时选择用StringBuffer。
0 0
【高并发】又一个朋友面试栽在了Thread类的stop()方法和interrupt()方法上!
新一轮的面试已经开始了,可能是疫情的原因吧,很多童鞋纷纷留言说今年的面试题难度又提高了,尤其是对并发编程的知识。我细想了下,也许有那么点疫情的原因吧,但无论面试的套路怎么变,只要掌握了核心知识和底层原理,吊打面试官应该不难吧。玩笑归玩笑,学习知识并不只是为了应付面试,更应该将这些知识运用到实际的工作中。
0 0
【Python面试】 列举Python中的标准异常类?
最近公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
0 0
【Python面试】 说说Python变量、函数、类的命名规则?
最近公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
0 0
AI工程师面试知识点:机器学习算法类
AI工程师面试知识点:机器学习算法类
0 0
+关注
xinxinitblog
C++和iOS码农
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java开发者面试百宝书
立即下载
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧
立即下载
面试常考算法
立即下载