一、构造函数

1、定义

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。

2、注意

如果程序猿没有编写构造函数,那么编译器会自动加上一个默认的构造函数,这个构造函数是一个空实现

3、示例

  1. class Student{
  2. public:
  3. void getData();
  4. Student(); //默认构造函数
  5. Student(string name,double data);
  6. Student(string name);
  7. private:
  8. double data;
  9. string name;
  10. };
  11. Student::getData(){
  12. cout << this->name << endl;
  13. cout << this->data << endl;
  14. }
  15. Student::Student(){
  16. }
  17. Student::Student(string name,double data){
  18. this->name = name;
  19. this->data = data;
  20. }
  21. Student::Student(string name): name(name){
  22. }
  23. int main(){
  24. Student stu1;
  25. Student stu2("jack",100);
  26. Student stu3("jack");
  27. stu1.getData();
  28. stu2.getData();
  29. stu3.getData();
  30. }

4、注意

① 允许有多个构造函数(函数重载)
② 如果自己编写了构造函数,那么编译器就不会再添加一个默认的空构造函数

二、析构函数

1、定义

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

2、注意

如果程序猿没有编写析构函数,编译器会自动添加上一个空的析构函数

3、示例

  1. private:
  2. double length;
  3. };
  4. // 成员函数定义,包括构造函数
  5. Line::Line(void)
  6. {
  7. cout << "Object is being created" << endl;
  8. }
  9. Line::~Line(void)
  10. {
  11. cout << "Object is being deleted" << endl;
  12. }
  13. void Line::setLength( double len )
  14. {
  15. length = len;
  16. }
  17. double Line::getLength( void )
  18. {
  19. return length;
  20. }
  21. // 程序的主函数
  22. int main( )
  23. {
  24. Line line;
  25. // 设置长度
  26. line.setLength(6.0);
  27. cout << "Length of line : " << line.getLength() <<endl;
  28. return 0;
  29. }

当上面的代码被编译和执行的时候, 它会产生以下的结果:

  1. Object is being created
  2. Length of line : 6
  3. Object is being deleted

4、注意

① 允许有多个析构函数(函数重载)
② 如果自己编写了析构函数,那么编译器就不会再添加一个默认的空析构函数