最常考的笔试题: MyString实现

46 篇文章 0 订阅

题目:实现下面接口

class MyString
{
public:
    MyString(const char * data = NULL);
    MyString(const MyString & other);
    MyString & operator = (const MyString & rhs);
    ~MyString();

private:
    char * m_data;
};


解答:

static char * copy_string(const char * data)
{
    if (NULL == data)
    {
        data = "";
    }

    int len = strlen(data);
    char * dup_data = new char [len + 1];
    if (NULL != dup_data)
    {
        strcpy(dup_data, data);
    }

    return(dup_data);
}

MyString::MyString(const char * data)
    : m_data(copy_string(data))
{

}

MyString::MyString(const MyString & other)
    : m_data(copy_string(other.m_data))
{

}

MyString & MyString::operator = (const MyString & rhs)
{
    if (&rhs != this)
    {
        MyString temp(rhs);
        std::swap(m_data, temp.m_data);
    }
    return(*this);
}

MyString::~MyString()
{
    delete [] m_data;
}


 

 

本来是很喜欢笔试这一环节的,但发现鲜有有意思的笔试题,容易的笔试题总跟着狗血的面试,更多的是不着边际的笔试题,这种情形就不要面试了。所以,可以的话,直接面试好了,要刷就刷吧。。。

希望各公司在社招的时候不要总出同一套题了,一来没意思,二来面试的人背都背熟了,笔试的意义在哪? 推出点有意思的题目吧。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值