# 3.4 Yapıcılar (Constructors)

C++'da yapıcılar, bir sınıfın nesneleri oluşturulduğunda otomatik olarak çağrılan özel metotlardır. Yapıcılar, nesnenin başlangıç değerlerini belirlemek ve nesne oluşturulurken gerekli olan diğer işlemleri gerçekleştirmek için kullanılır. Yapıcılar, sınıfın adını taşır ve dönüş tipi yoktur.

**Yapıcıların Özellikleri**

1. **İsim**: Yapıcılar, sınıfın adıyla aynı isme sahiptir.
2. **Dönüş Tipi**: Yapıcıların dönüş tipi yoktur, bu yüzden herhangi bir tip belirtilmez.
3. **Parametreler**: Yapıcılar, nesne oluşturulurken başlangıç değerlerini almak için parametre alabilir.
4. **Varsayılan Yapıcı**: Parametre almayan bir yapıcı, varsayılan yapıcı olarak adlandırılır.

**Yapıcı Örnekleri**

Aşağıda, C++'da yapıcıların nasıl tanımlandığına ve kullanıldığına dair bir örnek bulunmaktadır:

```cpp
#include <iostream>
#include <string>

class Araba {
private:
    std::string marka;
    int yil;

public:
    // Varsayılan Yapıcı
    Araba() {
        marka = "Bilinmiyor";
        yil = 0;
    }

    // Parametreli Yapıcı
    Araba(std::string m, int y) {
        marka = m;
        yil = y;
    }

    // Bilgi gösterme metodu
    void bilgiGoster() {
        std::cout << "Marka: " << marka << ", Yıl: " << yil << std::endl;
    }
};
```

**Yapıcıları Kullanma**

Yukarıdaki sınıfı kullanarak nesneler oluşturabiliriz:

```cpp
int main() {
    // Varsayılan yapıcı ile nesne oluşturma
    Araba araba1;
    araba1.bilgiGoster(); // Çıktı: Marka: Bilinmiyor, Yıl: 0

    // Parametreli yapıcı ile nesne oluşturma
    Araba araba2("Toyota", 2020);
    araba2.bilgiGoster(); // Çıktı: Marka: Toyota, Yıl: 2020

    return 0;
}
```

**Çoklu Yapıcılar (Overloading)**

C++'da bir sınıf birden fazla yapıcıya sahip olabilir. Bu, yapıcı aşırı yükleme (constructor overloading) olarak adlandırılır. Aşağıda, bir sınıfın birden fazla yapıcıya sahip olduğu bir örnek verilmiştir:

```cpp
class Kisi {
private:
    std::string isim;
    int yas;

public:
    // Varsayılan yapıcı
    Kisi() {
        isim = "Bilinmiyor";
        yas = 0;
    }

    // Parametreli yapıcı
    Kisi(std::string i, int y) {
        isim = i;
        yas = y;
    }

    // Bilgi gösterme metodu
    void bilgiGoster() {
        std::cout << "İsim: " << isim << ", Yaş: " << yas << std::endl;
    }
};
```

Yukarıdaki sınıfı kullanarak nesneler oluşturabiliriz:

```cpp
int main() {
    Kisi kisi1; // Varsayılan yapıcı
    kisi1.bilgiGoster(); // Çıktı: İsim: Bilinmiyor, Yaş: 0

    Kisi kisi2("Ali", 26); // Parametreli yapıcı
    kisi2.bilgiGoster(); // Çıktı: İsim: Ali, Yaş: 26

    return 0;
}
```

**Sonuç**

C++'da yapıcılar, nesnelerin başlangıç değerlerini ayarlamak ve nesne oluşturma sürecini yönetmek için kritik bir rol oynar. Yapıcılar, hem varsayılan hem de parametreli şekilde tanımlanabilir ve birden fazla yapıcı ile aşırı yüklenebilir.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.yavuzlar.org/egitim/c-plus-plus/3.0-siniflar/3.4-yapicilar-constructors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
