尊宝国际娱乐APP下载

设为首页收藏本站

编程十万个为什么,属于程序员的编程论坛

 找回密码
 5秒快速注册
QQ登录 只需一步,快速开始
搜索
查看: 8048|回复: 7
打印 上一主题 下一主题

[C/C++每日一练] 【笔试】:编程实现C++string 类成员函数

[复制链接]
跳转到指定楼层
传说中的楼主
发表于 2013-8-6 17:24:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PStatus"> 本帖最后由 夜影 于 2013-8-6 21:32 编辑

已知String类声明如下:
class String
{
    public:
    String(const char *str = NULL); // 通用构造函数
    String(const String &another); // 拷贝构造函数
    ~ String(); // 析构函数
    String & operater =(const String &rhs); // 赋值函数
    private:
    char *m_data; // 用于保存字符串
};

写出类的成员函数实现:
String::String(const char *str)
{
    if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
    {
        m_data = new char[1] ;
        m_data[0] = '\0' ;
    }
    else
    {
        m_data = new char[strlen(str) + 1];
        strcpy(m_data,str);
    }
}
String::String(const String &another)
{
    m_data = new char[strlen(another.m_data) + 1];
    strcpy(m_data,other.m_data);
}
String& String::operator =(const String &rhs)
{
    if ( this == &rhs)
        return *this ;
    delete []m_data; //删除原来的数据,新开一块内存
    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
}
String::~String()
{
    delete []m_data ;
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 !wechat_share!!wechat_share!
收藏收藏1 转播转播 分享分享 分享淘帖 顶一个顶一个 踩一下踩一下

BcWhy版权声明1、本帖可以任何形式转载到任何媒体,但必须带上本贴的URL连接,否则即视为同意支付 1000 元报酬
2、本主题所有言论和图片纯属夜影个人意见,与本论坛立场无关
3、本主题由该帖子作者夜影发表,该帖子作者夜影与本站享有帖子相关版权
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、本站管理员和版主有权不事先通知发贴者而删除本文

令人羡慕的沙发
发表于 2013-8-6 21:06:45 | 只看该作者
手抖了么,重复两次?
冷板凳
发表于 2013-8-23 17:37:28 | 只看该作者
很久没有练习做了啊。
4
发表于 2013-11-9 17:24:14 | 只看该作者
表示有些还是看不懂 我感觉没有学过吧
5
发表于 2013-11-9 17:25:33 | 只看该作者
String& String::operator =(const String &rhs)
{
    if ( this == &rhs)
        return *this ;
    delete []m_data; //删除原来的数据,新开一块内存
    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
}

本文摘自: 编程十万个为什么(http://www.bcwhy.com) 详细出处请参考:http://www.bcwhy.com/thread-20566-1-1.html
  这一段不怎么看得明白
6
发表于 2013-11-9 17:26:21 | 只看该作者
String& String::operator =(const String &rhs)
{
    if ( this == &rhs)
        return *this ;
    delete []m_data; //删除原来的数据,新开一块内存
    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
}
这段不怎么明白
7
发表于 2013-12-21 10:26:41 掌上BcWhyBcWhy手机版 | 只看该作者
jt0507 发表于 2013-11-09 17:26:21
String& String::operator =(const String &rhs)
{
    if ( this == &rhs)
        return *this ;

哪句不懂来自: iPhone客户端
8
发表于 2014-8-8 14:47:56 | 只看该作者
不太会 看了就头痛了
您需要登录后才可以回帖 登录 | 5秒快速注册
本版积分规则
关闭

BcWhy推荐上一条 /1 下一条

QQ|关于我们|最新帖子|小黑屋|手机版|编程十万个为什么 ( 粤ICP备16108587号-2   GMT+8, 2017-12-13 16:34 , Processed in 0.194907 second(s), 34 queries , File On.
Powered by Discuz! X3.3 © 2001-2017 Comsenz Inc.
快速回复 返回顶部 返回列表
尊宝国际娱乐APP下载亚虎娱乐手机官方网站亚虎国际娱乐齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载
优乐娱乐亚虎娱乐手机官方网站亚虎国际娱乐梦之城娱乐
尊宝国际娱乐APP下载尊宝国际手机首页尊宝国际娱乐城齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载