构造函数与析构函数
1类的构造函数
引例
定义一个类型:Circle, 圆
成员:圆心坐标(x,y),半径radius
class Circle
{
public:
int x, y;
int radius;
};
引例
定义一个对象
Circle a;
// 问题: 此时这个对象a算是一个有效的对象吗?
// 看看它的x,y,和radius,是乱的
那么再给它赋值不就好了吗?
a.x=0;
a.y=0;
a.radius = 1;
但是从“对象”的观点来看,对象被创建之时,就应该是有效的,不应该存在“半 成品”对象。
比如说,一辆车Car在造出来的时候,必须带着轮子。如果没有轮子,此时它还不能 称为Car。
引例
如何让一个对象在被创建的时候,就赋予初始值。
方法是:构造函数
构造函数
构造函数是类的一种特殊的成员函数:
(1) 函数名与类名必须相同
(2) 没有返回值
例如,
class Circle
{
…
public:
Circle ()
{
x = y = 0;
radius = 1;
}
};
构造函数
构造函数可以带参数,也可以重载
class Circle
{
…
public:
Circle ()
{
x = y = 0;
radius = 1;
}
Circle(int x, int y, int r)
{
this->x = x;
this->y = y;
this->radius = r;
}
};
构造函数如何调用
构造函数和普通成员函数不一样,一般不显