一、构造函数
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 createdLength of line : 6Object is being deleted
4、注意
① 允许有多个析构函数(函数重载)
② 如果自己编写了析构函数,那么编译器就不会再添加一个默认的空析构函数
