C ++ Oluşturucular: Türler ve Kopyalama Oluşturucular

Bu eğiticide, yardım örnekleriyle C ++ yapıcısı ve türü hakkında bilgi edineceğiz.

Yapıcı, bir nesne oluşturulduğunda otomatik olarak çağrılan özel bir üye işlevi türüdür.

C ++ 'da, bir oluşturucu, sınıfınki ile aynı ada sahiptir ve bir dönüş türüne sahip değildir. Örneğin,

 class Wall ( public: // create a constructor Wall() ( // code ) );

Burada işlev Wall(), sınıfın yapıcısıdır Wall. Yapıcının

  • sınıfla aynı adı taşır,
  • dönüş türü yoktur ve
  • dır-dir public

C ++ Varsayılan Yapıcı

Parametre içermeyen bir yapıcı , varsayılan kurucu olarak bilinir . Yukarıdaki örnekte, Wall()varsayılan bir kurucudur.

Örnek 1: C ++ Varsayılan Oluşturucu

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

Çıktı:

 Duvar Uzunluğu Oluşturma = 5.5

Burada wall1 nesnesi oluşturulduğunda Wall()kurucu çağrılır. Bu, nesnenin uzunluk değişkenini olarak ayarlar 5.5.

Not: Sınıfımızda bir kurucu tanımlamadıysak, C ++ derleyicisi otomatik olarak boş bir kodla ve parametresiz bir varsayılan kurucu oluşturacaktır.

C ++ Parametreli Yapıcı

C ++ 'da, parametrelere sahip bir oluşturucu, parametreli bir oluşturucu olarak bilinir. Üye verilerini başlatmak için tercih edilen yöntem budur.

Örnek 2: C ++ Parametreli Oluşturucu

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

Çıktı:

 Duvar Alanı 1: 90,3 Duvar Alanı 2: 53,55

Burada, Wall()2 parametresi olan parametreleştirilmiş bir kurucu oluşturduk : double lenve double hgt. Bu parametrelerde bulunan değerler, üye değişkenlerinin uzunluk ve yüksekliğini başlatmak için kullanılır.

RoomSınıfın bir nesnesini oluşturduğumuzda , üye değişkenlerin değerlerini argümanlar olarak iletiriz. Bunun kodu:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

Üye değişkenleri bu şekilde başlatıldığında, artık duvarın alanını calculateArea()fonksiyonla hesaplayabiliriz .

C ++ Kopyalama Yapıcı

C ++ 'daki kopya yapıcısı, bir nesnenin verilerini diğerine kopyalamak için kullanılır.

Örnek 3: C ++ Copy Constructor

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

Çıktı

 Oda 1 Alanı: 90,3 Oda 2 Alanı: 90,3

Bu programda, Wallsınıfın bir nesnesinin içeriğini diğerine kopyalamak için bir kopya oluşturucu kullandık . Kopya oluşturucunun kodu:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

Bu kurucunun parametresinin, Wallsınıfın bir nesnesinin adresine sahip olduğuna dikkat edin .

Daha sonra birinci nesnenin değişkenlerinin değerlerini ikinci nesnenin karşılık gelen değişkenlerine atarız. Nesnenin içeriği bu şekilde kopyalanır.

İçinde main(), daha sonra wall1 ve wall2 olmak üzere iki nesne oluşturuyoruz ve ardından ilk nesnenin içeriğini kodla ikinciye kopyalıyoruz

 Wall wall2 = wall1;

Not : Bir yapıcı, öncelikle nesneleri başlatmak için kullanılır. Ayrıca, bir nesne oluşturulduğunda varsayılan bir kodu çalıştırmak için kullanılırlar.

Ilginç makaleler...