Parametreli yapıcı
- C++ kursu
- Orta seviye
- Ders 8/116
- 5 dk
Parametre alan yapıcılarla nesneyi başlatmayı öğrenirsin.
Parametreli yapıcı
Bir yapıcı metot parametre de alabilir. Böylece nesneyi oluştururken başlangıç değerini dışarıdan verebilirsin. Parametreli yapıcı, sınıf adından sonra parantez içinde parametre listesiyle yazılır.
Örnek: class Score { public: Score(int s) { points = s; } int points; };. Kullanımı: Score score(100);. Bu satır hem nesneyi oluşturur hem de points üyesini 100 yapar. Parametreli yapıcı tanımlandığında varsayılan yapıcı artık otomatik üretilmez; gerekirse senin yazman gerekir.
Doğrudan başlatma
Parametreli yapıcıyla nesne oluşturmanın iki yazımı vardır. Klasik yol parantezle: Score score(100);. Modern C++'ta ayraç (brace) ile de yazılabilir: Score score{100};. İkisi de aynı yapıcıyı çağırır.
Ayraçlı yazımın avantajı, daraltma dönüşümlerine (narrowing conversion) izin vermemesidir. Score score{3.5}; eğer Score(int) tanımlıysa derleme hatası verir; çünkü 3.5 double'dan int'e daralır. Parantezli yazımda ise bu sessizce dönüşür ve veri kaybı oluşur. Bu yüzden modern C++ ayraçlı yazımı önerir.
Uygulama Score sınıfına parametreli yapıcı ekle
Score sınıfını tanımla. public: altına Score(int s) { points = s; } yapıcı metodunu ve int points; üye değişkenini ekle. main içinde Score score(100); ile bir örnek oluştur ve std::cout ile points'i yazdır.
Başlangıç kodu
#include <iostream>
// Score sınıfını tanımla
int main() {
// Score örneğini parametreli yapıcıyla oluştur ve points yazdır
return 0;
}Örnek çözüm
#include <iostream>
class Score {
public:
Score(int s) {
points = s;
}
int points;
};
int main() {
Score score(100);
std::cout << score.points;
return 0;
}Beklenen çıktı
100
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Parametreli yapıcı çağrısını tamamla
Score score____;
Score score(100);
Açıklama: Score score(100); ile değer parametre olarak verilir.
2 Score sınıfında yalnızca Score(int) tanımlıysa Score s; ne olur?
class Score { public: Score(int s); };- Çalışır, varsayılan yapıcı çağrılır
- Çalışır, s sıfırlanır
- Derleme hatası verir Doğru cevap
- Çalışır, s çöp değer alır
Açıklama: Parametreli yapıcı varsa varsayılan yapıcı otomatik üretilmez.
3 Çağrıyı sonucuna eşle
| Kavram | Anlamı |
|---|---|
Score s(100); |
100, parantezle |
Score s{100}; |
100, ayraçla |
Score s{3.5}; |
derleme hatası |
Score s; |
varsayılan yapıcı |