Özet - Yapıcı metot
- C++ kursu
- Orta seviye
- Ders 12/116
- 5 dk
Overloading ve initializer list'i birleştirerek bir Product sınıfı yazarsın.
Özet - Yapıcı metot
Bu bölümde yapıcı ve yıkıcı metotları öğrendin. Yapıcı metot sınıfla aynı isimdedir, dönüş türü yoktur ve nesne oluşturulurken otomatik çağrılır. Parametreli yapıcı dışarıdan değer alır; member initializer list iki noktadan sonra üyeleri doğrudan başlatır.
Aynı sınıfta birden fazla yapıcı tanımlayabilirsin (overloading); derleyici parametrelere göre seçer. Destructor tilde ile başlar, nesne kapsam dışına çıkınca otomatik çağrılır ve kaynakları temizler. Şimdi bunları bir araya getiren bir görev yapacağız.
Uygulama Counter sınıfına yapıcı ve destructor ekle
Counter sınıfını tanımla. public: altına int count; üye değişkeni, Counter() { count = 0; std::cout << "Kuruldu"; } yapıcı metot ve ~Counter() { std::cout << "Yokedildi"; } destructor'ını ekle. main içinde Counter c; örneği oluştur.
Başlangıç kodu
#include <iostream>
// Counter sınıfını tanımla
int main() {
// Counter örneği oluştur
return 0;
}Örnek çözüm
#include <iostream>
class Counter {
public:
int count;
Counter() {
count = 0;
std::cout << "Kuruldu";
}
~Counter() {
std::cout << "Yokedildi";
}
};
int main() {
Counter c;
return 0;
}Beklenen çıktı
KurulduYokedildi
Uygulama Counter'a parametreli yapıcı ekle
Yukarıdaki Counter sınıfına Counter(int start) : count(start) { std::cout << "Kuruldu"; } parametreli yapıcıyı başlatma listesiyle ekle (varsayılan yapıcıyı da koru). main içinde Counter c(10); örneği oluştur ve std::cout << c.count; ile değerini yazdır.
Başlangıç kodu
#include <iostream>
class Counter {
public:
int count;
Counter() {
count = 0;
std::cout << "Kuruldu";
}
~Counter() {
std::cout << "Yokedildi";
}
// Parametreli yapıcıyı başlatma listesiyle ekle
};
int main() {
// Counter örneğini parametreli yapıcıyla oluştur ve count yazdır
return 0;
}Örnek çözüm
#include <iostream>
class Counter {
public:
int count;
Counter() {
count = 0;
std::cout << "Kuruldu";
}
Counter(int start) : count(start) {
std::cout << "Kuruldu";
}
~Counter() {
std::cout << "Yokedildi";
}
};
int main() {
Counter c(10);
std::cout << c.count;
return 0;
}Beklenen çıktı
Kuruldu10Yokedildi
Sırada ne var?
Yapıcı metotlar, başlatma listeleri ve destructor'larla nesnelerin yaşam döngüsünü öğrendin. Nesneler tek başına güçlüdür ama C++'ın asıl gücü miras alma (inheritance) ile ortaya çıkar.
Sonraki bölümde mevcut bir sınıftan yeni bir sınıf türetmeyi, virtual ve override ile çalışma zamanında çok biçimlilik sağlamayı ve final ile mirası kapatmayı göreceksin. Miras, kod tekrarını azaltır ve sınıf hiyerarşileri kurmanı sağlar.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Player(std::string n, int l) : name(n), level(l) { } satırındaki iki nokta ne işe yarar?
Player(std::string n, int l) : name(n), level(l) { }- Sınıf hiyerarşisini belirtir
- Member initializer list'i başlatır Doğru cevap
- İki ifadeyi ayırır
- Etiket belirtir
Açıklama: İki nokta, başlatma listesini gövdeden ayırır.
2 Destructor işaretini yaz
class Logger { public: ____Logger() { } };
class Logger { public: ~Logger() { } };
Açıklama: Tilde destructor'ı belirtir: ~Logger().