c++ 拷贝构造函数 继承

class Base{
public:
    virtual ~Base();
    Base(const char *pStr);
    Base(const Base &other);
    virtual void CallFunction() ;
public:
    char *m_pBase;
};

Base::Base(const char *pStr){
    if (pStr) {
        long iLen = strlen(pStr)+1;
        m_pBase = new char[iLen];
        memset(m_pBase, 0, iLen);
        strcpy(m_pBase, pStr);
    }}

Base::~Base(){
    if (m_pBase) {
        delete [] m_pBase;
        m_pBase = NULL;
    }
}

Base::Base(const Base &other){
    if (m_pBase) {
        delete m_pBase;
        m_pBase = NULL;
    }
    long iLen = strlen(other.m_pBase)+1;
    m_pBase = new char[iLen];
    memset(m_pBase, 0, iLen);
    strcpy(m_pBase, other.m_pBase);

}

class Child:public Base{
public:
    ~Child();
    Child(const char *pStr , const char *pBase);
    Child(const Child &other);
public:
    char *m_pChild;
};

Child::Child(const char *pStr , const char *pBase):Base(pBase){//初始化列表中调父类构造函数
    if (pStr) {
        long iLen = strlen(pStr)+1;
        m_pChild = new char[iLen];
        memset(m_pChild, 0, iLen);
        strcpy(m_pChild, pStr);
    }
}

Child::Child(const Child &other):Base(other){//调父类拷贝构造函数
    if (m_pChild) {
        delete m_pChild;
        m_pChild = NULL;
    }
    long iLen = strlen(other.m_pChild)+1;
    m_pChild = new char[iLen];
    memset(m_pChild, 0, iLen);
    strcpy(m_pChild, other.m_pChild);
}


Child::~Child(){
    if (m_pChild) {
        delete [] m_pChild;
        m_pChild = NULL;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值