Latest web development tutorials

C ++ Klassenkonstruktor & destructor

C ++ Klasse & Objekte C ++ Klasse & Objekte

Constructor der Klasse

Constructor der Klasse ist ein Sonderklasse Member - Funktion, es führt jedes Mal eine neue Objektklasse erstellt wird .

Name Der Name der Klasse Konstruktor ist identisch und wird jede Art nicht zurück, es wird nicht leer zurück. Der Konstruktor kann verwendet werden, um die Anfangswerte für bestimmte Elementvariablen zu setzen.

Die folgenden Beispiele helfen, besser das Konzept des Konstruktor verstehen:

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

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Object is being created
Length of line : 6

Der Konstruktor mit Parametern

Der Standardkonstruktor ohne Argumente, aber wenn nötig, kann der Konstrukteur auch Parameter haben. Also, wenn Sie das Objekt auf das Objekt erstellen wird ein Anfangswert zugewiesen werden, wie im folgenden Beispiel gezeigt:

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

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

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

Mit der Initialisierung Listenfeld zu initialisieren

Mit der Initialisierung Liste Felder zu initialisieren:

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

Die obige Syntax entspricht der folgenden Syntax:

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

Angenommen, Sie eine Klasse C haben, eine Vielzahl von Feldern X, Y, Z, usw. müssen aus dem gleichen Grund initialisiert werden, können Sie die obige Syntax verwenden, nur ein Komma verwenden in verschiedenen Bereichen getrennt sind, wie folgt:

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

Klasse destructor

Klassedestructor ist ein Sonderklasse Member - Funktion, es wird jedes Mal ausgeführt werden , wird das Objekt gelöscht erstellt.

Name Der Name der Klasse destructor ist identisch, nur durch eine Tilde (~) voran als Präfix, kehrt es keinen Wert, es keine Argumente haben kann. Destructor Hilfe aus dem Programm (wie Dateien, um Speicher frei, usw. Schließen) vor der Freigabe von Ressourcen.

Die folgenden Beispiele helfen, besser das Konzept der geografischen Struktur Funktion beheben:

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

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

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

C ++ Klasse & Objekte C ++ Klasse & Objekte