我必须为派生类独立的定义一个构造函数是吗,也就是说,构造函数不会被继承?

 我来答
CodeBlove
2014-09-16 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:245万
展开全部

对,构造函数不属于可调用函数,它只是用于所属类的对象在创建时用于成员初始化,所以是只为本类对象服务的。

 

如果基类的构造函数是无参的(默认构造函数),派生类就不需要定义。但如果基类的构造函数是有参的,而且派生类也无法在定义时确定,也就是参数来自应用程序环境,那么派生类需要编写对应的有参构造函数,将参数传递给基类初始化;而如果基类构造函数中的参数由派生类能够确定的,那么在派生类的无参构造函数中定义常量,传递给基类初始化。

 

比如:

//基类
class A
{
   public:
      
     A(int a){x=a; }//基类有参构造函数
   private:
    int x;  
}   

//派生类B,接收外部参数 
class B
:A
{
   public:
    B(int a):A(a){}//  派生类有参构造函数接受外部参数传递给基类
 
}     

//派生类C,内部传递给基类
class C
:A
{
  public:
    C():A(10){}//派生类的无参构造函数将常量10传递给基类初始化  
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式