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 len
ve double hgt
. Bu parametrelerde bulunan değerler, üye değişkenlerinin uzunluk ve yüksekliğini başlatmak için kullanılır.
Room
Sı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, Wall
sı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, Wall
sı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.