Latest web development tutorials

C ++ konstruktor kelas & destructor

C ++ Kelas & Objek C ++ Kelas & Objek

Konstruktor kelas

Konstruktor kelas adalah khusus fungsi anggota kelas, dijalankan setiap kali kelas objek baru dibuat.

Nama Nama konstruktor kelas identik, dan tidak akan kembali jenis apa pun, tidak akan kembali batal. konstruktor dapat digunakan untuk mengatur nilai awal untuk variabel anggota tertentu.

Contoh berikut membantu untuk lebih memahami konsep konstruktor:

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

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Object is being created
Length of line : 6

Konstruktor dengan parameter

Konstruktor default tanpa argumen, tapi jika perlu, konstruktor dapat juga memiliki parameter. Jadi, ketika Anda membuat objek ke objek akan ditugaskan nilai awal, seperti yang ditunjukkan dalam contoh berikut:

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

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

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

Menggunakan daftar inisialisasi untuk menginisialisasi bidang

Menggunakan daftar inisialisasi untuk menginisialisasi bidang:

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

Sintaks di atas adalah setara dengan sintaks berikut:

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

Misalkan Anda memiliki kelas C, yang memiliki sejumlah bidang X, Y, Z, dll perlu diinisialisasi untuk alasan yang sama, Anda dapat menggunakan sintaks di atas, hanya menggunakan koma dipisahkan dalam berbagai bidang, sebagai berikut:

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

kelas destructor

Kelasdestructor adalah khusus fungsi anggota kelas, itu akan dieksekusi setiap kali objek tersebut dibuat dihapus.

Nama Nama destructor kelas identik, hanya didahului oleh tilde (~) sebagai awalan, tidak mengembalikan nilai apapun, tidak dapat memiliki argumen. Destructor bantuan dari program (seperti menutup file ke memori, dll) sebelum pelepasan sumber daya.

Contoh berikut membantu untuk lebih menyelesaikan konsep fungsi struktur geografis:

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

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

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

C ++ Kelas & Objek C ++ Kelas & Objek