我必须为派生类独立的定义一个构造函数是吗,也就是说,构造函数不会被继承?
1个回答
展开全部
对,构造函数不属于可调用函数,它只是用于所属类的对象在创建时用于成员初始化,所以是只为本类对象服务的。
如果基类的构造函数是无参的(默认构造函数),派生类就不需要定义。但如果基类的构造函数是有参的,而且派生类也无法在定义时确定,也就是参数来自应用程序环境,那么派生类需要编写对应的有参构造函数,将参数传递给基类初始化;而如果基类构造函数中的参数由派生类能够确定的,那么在派生类的无参构造函数中定义常量,传递给基类初始化。
比如:
//基类
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传递给基类初始化
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询