C++
Özet - Yapıcı metot
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.
Örnek çözümü göster
#include <iostream>
class Counter {
public:
int count;
Counter() {
count = 0;
std::cout << "Kuruldu";
}
~Counter() {
std::cout << "Yokedildi";
}
};
int main() {
Counter c;
return 0;
}
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.
Örnek çözümü göster
#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;
}
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.
Kendini test et
-
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
- İki ifadeyi ayırır
- Etiket belirtir
Cevabı göster
Member initializer list'i başlatır — İki nokta, başlatma listesini gövdeden ayırır.
-
Destructor işaretini yaz
class Logger { public: ____Logger() { } };
Cevabı göster
class Logger { public: ~Logger() { } };
Sıradaki ders: Miras temelleri