C++构造函数的继承

一、基类没有定义构造函数的情况

1、派生类也可以不定义构造函数,全部采用默认的构造函数,此时,派生类新增成员的初始化工作可以用其他公有函数来完成。

2、如果只有派生类定义构造函数,只需要构造派生类对象即可,对象的基类部分使用默认构造函数来自动创建

二、基类中存在构造函数

1、基类中存在不带参数的构造函数。如果基类定义了构造函数,而且该构造函数没有参数,那么它可以隐式的被继承,也就是说,派生类根本不需要构造函数。例子如下:

namespace Test1
{
public class BaseClass
{
public BaseClass()
{
Console.WriteLine("基类的构造函数被继承");
}
}
public class ChildClass : BaseClass
{

}
class Program
{
static void Main(string[] args)
{
ChildClass cc = new ChildClass();
}
}


}

运行结果:

基类的构造函数被继承

从运行结果看,派生类继承了基类的构造函数,此时派生类不需要包含构造函数

2、基类中存在带参数的构造函数。如果基类定义了带有参数的构造函数,则此构造函数必须被继承且在派生类中实现构造函数。同时提供一个将参数传递给基类构造函数的途径,以便在基类进行初始化时能获得必需的数据,在实现构造函数时使用base关键字,例子如下:

namespace Test1
{
public class BaseClass
{
public BaseClass(int x,int y)
{
int result = x + y;
Console.WriteLine("基类构造函数中的内容");
Console.WriteLine("x = {0},y = {1}两数和为", x, y, result);
Console.WriteLine();
}
}
public class ChildClass : BaseClass
{

public ChildClass(int x, int y):base(x,y)
{
Console.WriteLine("派生类构造函数中的内容");
int result = x * y;
Console.WriteLine("x = {0} y = {1}两数的积为:", x, y, result);
}
}
class Program
{
static void Main(string[] args)
{
ChildClass cc = new ChildClass(5,6);
}
}


}

运行结果:

基类构造函数中的内容
x = 5,y = 6两数和为

派生类构造函数中的内容
x = 5 y = 6两数的积为:

解析:派生类隐式的继承基类中不带参数的构造函数,上面的代码中基类定义了带有参数的构造函数,在其派生类中被继承,并使用base关键字传递参数。可以从运行结果中看到在创建派生类的对象后,程序首先运行的是基类的构造函中的内容,然后才是派生类的内容。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值