C++基础之编写String类(拷贝构造函数)

要求:写个String类(这个类在std里是有的,我们要自己实现自己的机制)

String类里面主要的有四个函数:构造函数、拷贝构造函数、赋值函数、析构函数

我们通过写这些函数来理解什么是拷贝构造函数

class String
{
pbulic:
char *m_data;
}

构造函数:

要求:将字符串通过构造函数赋到成员指针中

String( char *str )//无返回值、参数是个char的指针
{
        int length = strlen(str);//看一下字符串的长度
        m_data = new char[length + 1]//开辟字符串长度的空间,给‘\0’留个空间
        strcpy(m_data,str);//将字符串拷贝到开辟的空间中
}
解析:构造函数

构造函数我们很熟悉,不过这个构造函数中多了个参数,逻辑也简单


拷贝构造函数:初始化其他新建对象(假如说是有x,y两个对象,x对象初始化过,就是成员变量改赋值的都赋值了,y对象建立但什么都还没有赋值,通过拷贝构造函数用对象x来初始化对象y)

String( String & other)//和构造函数唯一的区别在于参数是个本类的对象
{
   int length = strlen(other.m_data);
   m_data = new char[length + 1];
   strcpy(m_data,other.m_data);
}

解析:拷贝构造函数

通过上面可以看得出拷贝构造函数和构造函数的区别在于参数不同,这也是本质,是重载,特殊的一种拷贝构造函数而已

逻辑和构造函数中的相同,逻辑懂了怎么实现懂了,剩下的就是如何触发,怎么用

char *t = "1234向前走";
String A(t);//调构造函数
String B(A);//当你用本类的对象来初始化本类的对象的时候,调的是拷贝构造函数,不会调构造函数了(已经调过一种构造函数了,不会调两次构造函数了,拷贝构造也是构造)
String B = A;//也可以这样来代替上一句 

赋值函数:将本类对象的值赋值给本类的另一个对象

Text & operator = ( Text & other)
{
    m_data = other.m_data;
    return other;
}
解析:赋值函数

没有new空间是构造的时候已经开辟好了,只是没有赋值


析构函数:释放new出来的空间


                
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值