C++ 构造函数
经过前面的学习,目前,大家已经掌握到如何通过对象去调用类中属性并对其进行赋值。
那么,在接下来的时间里面,我们就可以开始学习,如何去定义与使用“构造函数”。
首先,我们会提出一个问题,为什么要使用构造函数?
那么,我们可以举一个例子,例如:我们定义一个“子弹类”,而类中有4个属性,分别是子弹的宽度与高度,以及子弹起始位置的X与Y坐标。然后,我们把这个“子弹类”通过代码先定义出来,代码如下:
class Bullet
{
public:
int w;//子弹的宽度
int h;//子弹的高度
int x;//子弹起始位置的X坐标
int y;//子弹起始位置的Y坐标
};
接下来,我们要定义1颗子弹的对象,同时,要为子弹中的4个属性进行赋值,分别是w等于10,h等于5,x等于0,y等于0,然后,我们先通过代码把这个要求实现出来,代码如下:
Bullet BT1; //定义一颗子弹对象BT1
BT1.w = 10;//子弹宽度为10
BT1.h = 5; //子弹高度为5
BT1.x = 0; //子弹起始位置的X坐标为0
BT1.y = 0; //子弹起始位置的Y坐标为0
然后,由于我们要对这4个属性进行赋初值,所以,我们通过对象BT1分别去调用这4个属性,所以,就要多写了4行代码。那么,有什么方法可以在定义对象时,把相应的属性进行初始化赋值呢?那么,这个方法就是使用构造函数。
当我们了解了为什么要使用构造函数以后,我们就来看看构造函数在C++中定义的格式,格式如下:
构造函数的名字()
{
构造函数的主体部分
}
格式与特点分析:
(1)构造函数的名字必须与对应的“类名”相同。
(2)一对小括号,格式要求不能省略。
(3)一对大括号,格式要求不能省略。
(4)大括号之间就是构造函数的主体部分,需要进行初始化赋值的属性就可以写在这里。
(5)构造函数在对象定义时会自动调用,所以,它里面的代码就会被自动执行。
通过上面的分析,大家就可以了解到,构造函数的定义格式,以及,构造函数可以在对象定义时自动调用,这样,我们就可以把需要进行初始化的属性写到该函数中,然后,定义对象就可以了。
接下来,我们就在上面定义的子弹类中定义一个构造函数,代码如下:
class Bullet
{
public:
int w;//子弹的宽度
int h;//子弹的高度
int x;//子弹起始位置的X坐标
int y;//子弹起始位置的Y坐标
Bullet() //构造函数Bullet必须与类名相同
{
//下面4行代码是需要进行赋初值的属性
w = 10;
h = 5;
x = 0;
y = 0;
}
};
Bullet BT1; //定义一颗子弹对象BT1,由于类中添加了构造函数,所以,在定义BT1对象时会自动调用构造函数Bullet(),这样,类中的4个属性就在定义BT1对象的同时一并完成了赋初值的工作,所以,BT1对象中的属性w就等于10,h就等于5,x与y就等于0。
通过上面的学习,相信大家对构造函数的定义与使用有了一个初步了解,但是,如何灵活地运用这个知识点呢?那么,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对该知识点的理解和运用,以及“尽快进入到编程的状态”。
要达到灵活运用,是需要通过不停地反复训练才可以做到,所以,不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)