Yapıcı metot
- C++ kursu
- Orta seviye
- Ders 7/116
- 5 dk
Sınıf yapıcı metodunu (constructor) tanımlamayı öğrenirsin.
Yapıcı metot
Bir yapıcı metot (constructor), nesne oluşturulurken otomatik çağrılan özel bir üye fonksiyondur. Sınıfla aynı isme sahiptir ve dönüş türü yoktur. Amacı üye değişkenlere ilk değer vermektir.
Örnek: class Timer { public: Timer() { seconds = 0; } int seconds; };. Burada Timer() yapıcı metottur. Timer t; yazdığında bu metot otomatik çağrılır ve seconds sıfırlanır. Elle atama yapmana gerek kalmaz. Parametresiz yapıcıya varsayılan yapıcı (default constructor) denir.
Otomatik çağrı
Yapıcı metot main içinden çağrılmaz; nesne tanımlandığı an otomatik çalışır. Timer t; satırı hem bir nesne oluşturur hem de Timer() yapıcısını çalıştırır. Parantez eklemene gerek yoktur.
Birden fazla nesne tanımlarsan her biri için ayrı yapıcı çağrılır: Timer a, b; iki kez çalıştırır. Yapıcı metot sınıfın public bölümünde olmalıdır; aksi halde Timer t; derleme hatası verir. Üyeler yapıcı çağrılmadan önce bellekte ayrılır; yapıcı onları anlamlı değerlerle doldurur.
Uygulama Timer sınıfına varsayılan yapıcı ekle
Timer sınıfını tanımla. public: altına Timer() { seconds = 0; } yapıcı metodunu ve int seconds; üye değişkenini ekle. main içinde bir örnek oluştur ve std::cout ile seconds'u yazdır.
Başlangıç kodu
#include <iostream>
// Timer sınıfını tanımla
int main() {
// Timer örneği oluştur ve seconds yazdır
return 0;
}Örnek çözüm
#include <iostream>
class Timer {
public:
Timer() {
seconds = 0;
}
int seconds;
};
int main() {
Timer t;
std::cout << t.seconds;
return 0;
}Beklenen çıktı
0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir yapıcı metodun başlığında dönüş türü neden yazılmaz?
Timer() { seconds = 0; }- Çünkü void kabul edilir
- Çünkü yapıcı metot değer döndürmez Doğru cevap
- Çünkü derleyici otomatik ekler
- Çünkü int varsayılır
Açıklama: Yapıcı metot hiçbir değer döndürmez, dönüş türü yoktur.
2 Yapıcı metot adını tamamla
class Timer { public: ____() { seconds = 0; } int seconds; };
class Timer { public: Timer() { seconds = 0; } int seconds; };
Açıklama: Yapıcı metot sınıfla aynı isme sahiptir: Timer().
3 Özelliği anlamına eşle
| Kavram | Anlamı |
|---|---|
Sınıfla aynı isim |
Yapıcı metot adı |
Dönüş türü yok |
Yapıcı metot imzası |
Nesne tanımlanınca |
Otomatik çağrı anı |
public bölümde |
Erişilebilirlik |