一、构造函数
1、定义
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。
2、注意
如果程序猿没有编写构造函数,那么编译器会自动加上一个默认的构造函数,这个构造函数是一个空实现
3、示例
class Student{
public:
void getData();
Student(); //默认构造函数
Student(string name,double data);
Student(string name);
private:
double data;
string name;
};
Student::getData(){
cout << this->name << endl;
cout << this->data << endl;
}
Student::Student(){
}
Student::Student(string name,double data){
this->name = name;
this->data = data;
}
Student::Student(string name): name(name){
}
int main(){
Student stu1;
Student stu2("jack",100);
Student stu3("jack");
stu1.getData();
stu2.getData();
stu3.getData();
}
4、注意
① 允许有多个构造函数(函数重载)
② 如果自己编写了构造函数,那么编译器就不会再添加一个默认的空构造函数
二、析构函数
1、定义
类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
2、注意
如果程序猿没有编写析构函数,编译器会自动添加上一个空的析构函数
3、示例
private:
double length;
};
// 成员函数定义,包括构造函数
Line::Line(void)
{
cout << "Object is being created" << endl;
}
Line::~Line(void)
{
cout << "Object is being deleted" << endl;
}
void Line::setLength( double len )
{
length = len;
}
double Line::getLength( void )
{
return length;
}
// 程序的主函数
int main( )
{
Line line;
// 设置长度
line.setLength(6.0);
cout << "Length of line : " << line.getLength() <<endl;
return 0;
}
当上面的代码被编译和执行的时候, 它会产生以下的结果:
Object is being created
Length of line : 6
Object is being deleted
4、注意
① 允许有多个析构函数(函数重载)
② 如果自己编写了析构函数,那么编译器就不会再添加一个默认的空析构函数