Latest web development tutorials

Classe C ++ constructeur & destructor

Classe C ++ & Objets Classe C ++ & Objets

Constructeur de la classe

Constructeur de la classe est une fonction de membre de la classe spéciale, il exécute chaque fois qu'une nouvelle classe d'objet est créé.

Nom Le nom du constructeur de la classe est identique, et ne reviendra pas tout type, il ne reviendra pas vide. Le constructeur peut être utilisé pour définir les valeurs initiales pour certains variable membre.

Les exemples suivants permettent de mieux comprendre le concept du constructeur:

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Object is being created
Length of line : 6

Le constructeur avec des paramètres

Le constructeur par défaut sans aucun argument, mais si nécessaire, le constructeur peut aussi avoir des paramètres. Ainsi, lorsque vous créez l'objet à l'objet sera attribué une valeur initiale, comme le montre l'exemple suivant:

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

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

Utilisation de la liste d'initialisation pour initialiser le terrain

Utilisation de la liste d'initialisation pour initialiser les champs:

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

La syntaxe ci-dessus est équivalente à la syntaxe suivante:

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

Supposons que vous ayez une classe C, ayant une pluralité de champs X, Y, Z, etc. besoin d'être initialisé à la même raison, vous pouvez utiliser la syntaxe ci-dessus, il suffit d'utiliser une virgule séparés dans différents domaines, comme suit:

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

classe destructor

Classedestructor est une fonction de membre de la classe spéciale, il sera exécuté à chaque fois que l'objet est créé supprimé.

Nom Le nom du destructeur de classe est identique, seulement précédé par un tilde (~) comme préfixe, il ne retourne pas de valeur, il ne peut pas avoir des arguments. Destructor aide sur le programme (comme la fermeture des fichiers pour libérer la mémoire, etc.) avant la libération des ressources.

Les exemples suivants permettent de mieux résoudre la notion de fonction de structure géographique:

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

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

Classe C ++ & Objets Classe C ++ & Objets