Latest web development tutorials

C ++ constructor de la clase y destructor

Clase C ++ y objetos Clase C ++ y objetos

Constructor de la clase

Constructor de la clase es una función especial miembro de la clase, se ejecuta cada vez que se crea una nueva clase de objeto.

Nombre El nombre del constructor de la clase es idéntico, y no volverá cualquier tipo, no volverá vacía. El constructor puede ser utilizado para establecer los valores iniciales de cierta variable miembro.

Los ejemplos siguientes ayudan a comprender mejor el concepto de la constructor:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Object is being created
Length of line : 6

El constructor con parámetros

El constructor por defecto sin ningún argumento, pero si es necesario, el constructor puede también tener parámetros. Así que cuando se crea el objeto al objeto se le asignará un valor inicial, como se muestra en el siguiente ejemplo:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

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

Uso de la lista de inicialización para inicializar el campo

Uso de la lista de inicialización para inicializar los campos:

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

La sintaxis anterior es equivalente a la siguiente sintaxis:

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

Suponga que tiene una clase C, que tiene una pluralidad de campos X, Y, Z, etc. necesita ser inicializado a la misma razón, puede utilizar la sintaxis anterior, sólo tiene que utilizar una coma separados en diferentes campos, como sigue:

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

destructor de la clase

destructor de clase es una función especial miembro de la clase, se ejecuta cada vez que se crea elimina el objeto.

Nombre El nombre del destructor de la clase es idéntico, solamente precedido por una tilde (~) como prefijo, no devuelve ningún valor, no puede tener ningún argumento. Destructor ayuda fuera del programa (como el cierre de los archivos de la memoria libre, etc.) antes de la liberación de los recursos.

Los siguientes ejemplos ayudan a resolver mejor el concepto de función de estructura geográfica:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Object is being created
Length of line : 6
Object is being deleted

Clase C ++ y objetos Clase C ++ y objetos