C++ 类构造函数 & 析构函数

返回上一级

类的构造函数和析构函数是两个特殊的成员函数,它会在每次创建类的新对象或销毁一个对象时执行

类的构造函数

类的 构造函数 是类的一种特殊的成员函数,它会在每次创建类的新对象时执行

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void

因为类的构造函数会在创建类的对象时执行,所以可以在构造函数里为某些成员变量设置初始值

例如下面的代码,我们为 Line 类创建了一个构造函数

#include <iostream>

using namespace std;

class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line();  // 这是构造函数

   private:
      double length;
};

// 成员函数定义,包括构造函数
Line::Line(void)
{
    cout << "Object is being created" << 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

带参数的构造函数

默认的构造函数没有任何参数

如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值

#include <iostream>

using namespace std;

class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line(double len);  // 这是构造函数

   private:
      double length;
};

// 成员函数定义,包括构造函数
Line::Line( double len)
{
    cout << "Object is being created, length = " << len << endl;
    length = len;
}

void Line::setLength( double len )
{
    length = len;
}

double Line::getLength( void )
{
    return length;
}
// 程序的主函数
int main( )
{
   Line line(10.0);

   // 获取默认设置的长度
   cout << "Length of line : " << line.getLength() <<endl;
   // 再次设置长度
   line.setLength(6.0); 
   cout << "Length of line : " << line.getLength() <<endl;

   return 0;
}

编译和运行以上范例,输出结果如下:

Object is being created, length = 10
Length of line : 10
Length of line : 6

使用初始化列表来初始化字段

使用初始化列表来初始化字段

Line::Line( double len): length(len)
{
    cout << "Object is being created, length = " << len << endl;
}

上面的语法等同于如下语法

Line::Line( double len)
{
    cout << "Object is being created, length = " << len << endl;
    length = len;
}

初始化列表可以初始化多个成员变量

假设有一个类 C,具有多个字段 X、Y、Z 等需要进行初始化

那么我们就可以使用初始化列表初始化它们,只需要在不同的字段使用逗号进行分隔

C::C( double a, double b, double c): X(a), Y(b), Z(c)
{
  ....
}

类的析构函数

类的 析构函数 会在每次删除所创建的对象时执行

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号 ( ~ ) 作为前缀

析构函数它不会返回任何值,也不能带有任何参数

析构函数有助于在跳出程序 ( 比如关闭文件、释放内存等 ) 前释放资源

#include <iostream>

using namespace std;

class Line
{
   public:
      void setLength( double len );
      double getLength( void );
      Line();   // 这是构造函数声明
      ~Line();  // 这是析构函数声明

   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

返回上一级

C++ 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.