今天碰到的一个问题,关于通过基类对象的引用给子类赋值

以下是在论坛上提出的问题:

关于通过基类对象的引用给子类赋值的问题:

比如说:

class A
{
    public:
            A(int num):m_num(num){}
    protected:
            int m_num;
};
///
A zhy(123);

class B:public A
{
    B(A &ZHY,m_name)
    {
        如何利用这个A对象的引用ZHY把B中从A类继承过来的m_num赋值?
    }
private:
    int m_name;
};

我知道父类变量的初始化靠父类的构造函数完成,即B(int i):A(i)
{
}

可是如果父类的参数有很多,那么继承了父类的子类的参数一般会更多,假如我创建了图书这么一个类,用它作父类派生出“已借出图书“这么一个类,它继承图书类的书名,作者等信息,自己新添加借出时间和应归还时间等信息,那么当我创建创建“已借出图书类”的对象的时候岂不是要把书的书名作者等基本信息再输入一遍?所以我想通过已经创建的图书类的对象,在构造函数中用它的引用把“已借出图书”对象中图书的基本信息一次都初始化,而除了图书类对象的引用,自己只需要初始化借出时间和应归还时间等信息,这样不是方便得多?  

网友的解答:

这样增加拷贝构造函数
class A
{
public:
     A(int num):m_num(num){}
     A( const A& a ): m_num( a.m_num ){ } //增加的拷贝构造函数
protected:
     int m_num;
};
///
A zhy(123);

class B:public A
{
public:                    //构造函数共有
    B(A &ZHY, int m_name)  //构造函数
: A(ZHY)
, m_name(m_name)
    {
        //如何利用这个A对象的引用ZHY把B中从A类继承过来的m_num赋值?
    }
private:
    int m_name;
};

//使用如下
void main()
{
A a(10);
B b( a,3);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值