C++类继承:派生类的构造函数

派生类不能直接访问基类的私有成员,必须使用基类的公有方法来访问基类的私有成员。这意味着派生类的构造函数必须使用基类的构造函数来设置从基类中继承的私有成员

因此,在程序使用派生类构造函数创建派生类对象之前,要使用基类构造函数创建基类对象。C++中,使用成员初始化列表完成这种工作。

示例:

class A

{

public:

            A(int a);

            A();//默认构造函数

private:

            int a_;

};

class B: public A

{

public:

            B(int b, int a);

            B();//默认构造函数

private:

            int b_;

};

A::A(int a)           //A的构造函数

{

     a_=a;

}

B::B(int b,int a):A(a)       //B的构造函数,使用成员初始化列表创建A,B中的变量b_也可以采用成员初始化列表初始化,如

{                                                                                                                                                                                 //           b_(b)

     b_=b;

}

假设主程序中包含如下语句:

B  test(1,2);// 定义了一个变量名为test的B类变量,并初始化

B的构造函数首先将实参1,2赋给形参b,a,然后将a作为实参传递给构造函数A(int a),并创建一个嵌套的A类的对象,将2赋给a_保存到该对象中,然后进入B的构造函数体,完成B类对象的创建,并将参数值1赋给b_。

注:

1. 如果派生类构造函数省略成员初始化列表,程序将默认使用基类的默认构造函数,除非要是使用默认构造函数,否则应显式调用正确的基类构造函数。

示例:

B::B(int b,int a)       //  :A()默认的基类构造函数

{                                                                                                                                                                                 

     b_=b;

}

2. 派生类构造函数中,也可以调用基类的复制构造函数

示例:

B::B(int b,A a) :A(a)      //  :如果没有定义A类显示构造函数的话,则A(a)将调用A类的隐式复制构造函数

{                                                                                                                                                                                 

     b_=b;

}

3. 派生类在过期时,程序将首先调用派生类析构函数,然后再调用基类的析构函数。

 

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值