string类构造函数、拷贝构造函数、赋值函数、析构函数

#ifndef DDSTRING_H
#define DDSTRING_H

class ddString {
public:
    ddString(const char *pStrAddr = 0);
    ddString(const ddString &otherStr);
    ddString &operator=(const ddString &otherStr);
    unsigned int size() const;
    char *getData() const;
    ~ddString();
private:
    char *pddStr;
};

#endif

#include <string.h>
#include "ddString.h"

ddString::ddString(const char *pStrAddr)
{
    if (pStrAddr) {
        unsigned int size = strlen(pStrAddr);
        pddStr = new char[size+1];
        strcpy(pddStr, pStrAddr);
    } else {
        pddStr = new char[1];
        *pddStr = '\0';
    }
}

ddString::ddString(const ddString &otherStr)
{
    unsigned int size = otherStr.size();
    pddStr = new char[size+1];
    strcpy(pddStr, otherStr.pddStr);
}

ddString &ddString::operator=(const ddString &otherStr)
{
    //if they have same pointers, they are same
    if (this != &otherStr) {
        //delete old resource
        delete[] pddStr;

        unsigned int size = otherStr.size();
        pddStr = new char[size+1];
        strcpy(pddStr, otherStr.pddStr);
    }
    return(*this);
}

unsigned int ddString::size() const
{
    return(strlen(pddStr));
}

char *ddString::getData() const
{
    return(pddStr);
}

ddString::~ddString()
{
    if (pddStr != 0) {
        delete[] pddStr;
        pddStr = 0;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值