类成员初始化问题 09.2.23

由于初始化顺序是从基类到派生类的
基类的构造函数负责初始化基类与派生类的构造数负责初始化派生类,
在MFC中N层继承类库中,都是不同层中的类负责初始化自己本身和调用上一级构造函数进行初始化
 
如何在派生类初始化从基类中继承来的protected成员和基类的private成员呢?
答案是:
在派生类的构造函数间接的调用基类构造函数来实现,派生类的初始化列表必须明确指出基类的初始化式

1.无参数的构造函数
格式:构造函数名():(基类构造函数(),派生类成员d1(值),d2(值),n(值){}
2.有参数的构造函数
格式:
构造函数名(基类参数...派生类参数...)
   :(基类构造(b1(参数),b2(参数)),派生类成员d1(参数),d2(参数),n(参数){}
class bulk_item: public item_base{
public: 
 //1.派生类无参数的构造函数 
 bulk_item():(item_base(),int_qty(0),discount(0.0){}
 //2.派生类有参数的构造函数 
 bulk_item(std::string& book=/"/",double s_price=0.0,int qty=0,double dis=0.0)//函数参数
            :item_base(book,s_price),int_qty(0),discount(0.0){} //初始化列表
private:
 int min_qty;
 double discount;
}; 
 
3.设计指导
3.1初始化方式选择:
无参数的构造函数:主要用初始化列表来初始化成员变量
有参数的构造函数:默认形参+初始化列表的构造函数 
 
3.2派生类的初始化顺序
由于初始化顺序是从基类到派生类的,在初始化列表中应该先初始化基类,然后再是派生类本身
如果要求程序高性能,使用初始列表是C++的生产首选,对于习惯于C的程序员,在函数体初始化成员也是可行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值