Latest web development tutorials

Classe C ++ costruttore e distruttore

C ++ Class & Objects C ++ Class & Objects

Costruttore della classe

Costruttore della classe è una funzione speciale di membro di classe, viene eseguito ogni volta che viene creata una nuova classe di oggetti.

Nome Il nome del costruttore della classe è identica, e non tornerà qualsiasi tipo, non restituirà nulla. Il costruttore può essere utilizzato per impostare i valori iniziali per certa variabile membro.

I seguenti esempi aiutano a comprendere meglio il concetto del costruttore:

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Object is being created
Length of line : 6

Il costruttore con i parametri

Il costruttore di default senza alcun argomento, ma, se necessario, il costruttore può anche avere parametri. Così, quando si crea l'oggetto per l'oggetto verrà assegnato un valore iniziale, come mostrato nel seguente esempio:

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

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

Utilizzando l'elenco di inizializzazione per inizializzare campo

Utilizzando l'elenco di inizializzazione per inizializzare i campi:

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

La sintassi precedente è equivalente alla seguente sintassi:

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

Supponiamo di avere una classe C, con una pluralità di campi X, Y, Z, ecc bisogno di essere inizializzato per lo stesso motivo, è possibile utilizzare la sintassi di cui sopra, basta usare una virgola separati in diversi campi, come segue:

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

distruttore di classe

Classedistruttore è una funzione speciale membro della classe, verrà eseguito ogni volta che l'oggetto viene creato eliminato.

Nome Il nome del distruttore di classe è identica, solo preceduto da una tilde (~) come prefisso, non restituisce alcun valore, non può avere alcun argomento. Destructor aiuto fuori dal programma (come la chiusura di file per liberare la memoria, etc.) prima del rilascio delle risorse.

Gli esempi che seguono aiutano a risolvere meglio il concetto di funzione di struttura geografica:

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

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

C ++ Class & Objects C ++ Class & Objects