C++考试用(第九章)

不能在类声明中对数据成员初始化
如果一个类中的所有成员都是公用的,那么可以在定义对象时对数据成员进行初始化;如:

class Time
{
   
public:
	hour;
	minute;
	sec;
}
Time t1={
   14,56,30};

如果类中有private或protected的数据成员,就不能用这种方法。


利用构造函数实现数据成员的初始化

构造函数与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行;

构造函数必须和类名同名,不能任意命名
不具有任何类型,不具有返回值

构造函数在建立类对象时会自动调用构造函数;在建立对象时系统为对象分配存储单元,此时执行构造函数,就把指定的初值送到有关数据成员的存储单元中,每建立一个对象,就会调用一次构造函数。

构造函数不需被用户调用,也不能被用户调用;
构造函数是定义对象时由系统自动执行的,而且只能执行一次,构造函数一般声明为public

可以用一个类对象初始化另一个类对象,如:

Time t1;
Time t2=t1;

此时,把对象t1的各个数据成员复制到t2相应各成员,而不调用t2的构造函数

如果用户没有自己定义构造函数,那么C++会自动生成一个构造函数,只是这个构造函数的函数体是空的,没有参数,不执行任何操作。


带参数的构造函数

用户是不能调用构造函数的,那么对于带参数的构造函数,无法用常规的方式给出实参
实参是在定义对象时给出的,定义对象的一般形式为:

类名 对象名(实参1,实参2···);

在建立对象时把实参的值传递给构造函数相应的形参,把他们作为数据成员的初值。

带参数的构造函数中的形参,其对应的实参是在建立对象时给出的。即在建立对象时同时指定数据成员的初值;


用参数初始化表对数据成员初始化

上面是在构造函数的函数体内通过赋值语句对数据成员实现初始化
下面介绍另一种方法
参数初始表来实现对数据成员的初始化

不在函数体内对数据成员初始化,而是在函数首部实现
在原来函数首部的末尾加一个冒号,然后列出参数的初始化表,后面的花括号是空的,即函数体是空的,没有任何执行语句
用参数的初始化表法可以减少函数体的长度,使结构函数显得精炼简单。这样就可以直接在类体中定义构造函数;

带有参数初始化表的构造函数的一般形式:

类名::构造函数名([参数表])[:成员初始化表]
{
   
	[构造函数体]
}

例如:
Box::Box(int h,int w
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值