Category: CPP

  • CPP 054 – Friends

    Sınıfın dışındaki fonksiyonlar sınıfın içindeki private ve protected alandaki değişkenlere erişemez. Eğer erişmesini istiyorsak friend keyword’ünü kullanıyoruz. A friend function is a function that isn’t a member of a class but has access to the class’s private and protected members. Friend functions aren’t considered class members; they’re normal external functions that are given special access…

  • CPP 053 – Static Members

    Static değişkenler ve fonksiyonlar nesnelerden bağımsız olarak sınıfa aittir. Bunlara erişmek ve kullanmak için herhangi bir nesneye ihtiyacımız yoktur. Nesnelerden bağımsız olduğu için tüm nesneler aynı değişkene/fonksiyona erişebilir.

  • CPP 052 – Const Objects

    Initialize edildikten sonra bir daha değer ataması yapılamayan sabit değişkenler oluşturmak için kullanıyoruz: Yani kısacası ömrü boyunca aynı değeri taşır. Herhangi bir sınıfa ait constant bir nesne oluşturabiliriz: Bu kodda Player sınıfına ait constant bir nesne oluşturduk. 24. satırdaki set_name() metoduna yaptığımız çağrı bize hata verecektir. Çünkü sabit bir nesne adı üstüne değiştirilemez. Peki neden…

  • CPP 051 – Copy & Move && Constructors

    Nesnenin kopyalandığı durumlarda copy constructor çağrılıyor. Move constructor ise kopyalama işlemi yerine var olan nesneyi yeni nesneye atıyor. Yani bir nevi bir yer değiştirme durumu söz konusu oluyor. Copy Constructor Hangi durumlarda çağrılabilir: https://www.geeksforgeeks.org/when-is-a-copy-constructor-called-in-cpp Kısacası fonksiyonun pass by value ile parametre alması, fonksiyonun değer döndürmesi esnasında, var olan nesneden yeni bir nesne oluşturma durumunda bu…

  • CPP 050 – Constructors

    Daha önce yapıcılar ve yıkıcılar dersinde zaten bahsetmiştik. Şimdi detaylara bakalım. Contstructor Nedir? Default Constructor A default constructor is a constructor which can be called with no arguments. https://en.cppreference.com/w/cpp/language/default_constructor Overloading Constructors Tıpkı fonksiyonları overload yaptığımız gibi constructor’ları da overload yapabiliyoruz. Member Initializer List Sınıfa ait değişkenlere değer atarken şuana kadar hep constructor fonksiyonunun gövdesinde yaptık.…

  • CPP 049 – .h & .cpp

    Şuana kadar farklı sınıfları hep aynı dosyanın içine yazıp öyle çalıştırdık. Fakat bu ölçeklenebilir bir davranış değil. Onbinlerce yüzbinlerce satır kodun tek bir dosyada olması sıkıntılı bir durum. Bu sebeple bunları ayrı dosyaların içine nasıl yazabileceğimizi göstereceğiz. Şimdi main.cpp de şöyle bir kodumuz olsun: Person isminde bir sınıf oluşturduk sonra main() fonksiyonunda 2 adet obje…

  • CPP 048 – Virtual Functions

    Aşağıda A ve B olmak üzere iki sınıf var. B, A’dan miras alıyor. Daha sonra her ikisine de f() fonksiyonunu ekliyoruz. A türüne ait bir pointer oluşturup sırasıyla a ve b nesnelerini atayıp f() fonksiyonunu çağırınca Base class’a ait f() fonksiyonu çalıştı. A sınıfına ait bir nesne için A::f() basması gayet mantıklı fakat B sınıfına…

  • CPP 047 – Interface

    Birbirinden miras alan sınıflar birbirine mantıksal olarak bağlıdır. Örneğin Öğretmen sınıfı İnsan sınıfından miras alabilir. Çünkü bir öğretmen aynı zamanda bir insandır. Öğretmen insana ait olan özellikleri ve davranışları taşır fakat öte yandan At sınıfı, İnsan sınıfından miras alamaz. Çünkü atlar birer insan değildir. Atların insan olmaması bu iki canlı arasında benzerliklerin olmayacağı anlamına gelmiyor.…

  • CPP 046 – Inheritance 

    Bir oyun yaptığımızı düşünelim. Oyunumuzda düşman NPC’lerin olmasını istiyoruz. Kodlamaya başladık 1 düşman için bir sınıf yazdık, 2. düşman türü için bir sınıf, 3. düşman türü için bir sınıf derken belli bir süre sonra şunu farkediyoruz. Düşman NPC’ler birbirinden ne kadar farklı olsa da aslında hepsi aynı temel özelliklere sahip: Aynı şeyleri tekrar tekrar yazmanın…

  • CPP 045 – Encapsulation

    Kapsülleme, gereksiz detayların sınıfın dışından gözükmesini engellemek. Kendisine verilen sayıları toplayıp istediğimizde bize toplamı veren bir sınıf oluşturalım: Sınıfımız şuanlık doğru çalışıyor. Fakat bir problemimiz var: Sınıfımızı kullanan birisi value değişkenine direk olarak erişebilir. Erişsin sorun ne? Sorun sınıfın amacına uygun olmaması. Başta ne demiştik: “Kendisine verilen sayıları toplayıp istediğimizde bize toplamı veren bir sınıf…

  • CPP 044 – Access Specifiers

    Sınıfımızdaki değişken ve fonksiyonların görünürlülüğünü belirliyor. 3 türdür Default olarak sınıfımızın etiketi private dır x ve y private alanda olduğu için 10. satırdaki mc.x; ifadesi hata verecektir. Sınıfı kullanan kişilerin dışardan erişime ihtiyacı olan şeyleri public yapıyoruz. Dışardan müdahale olmamasını istediğimiz şeyleri private yapıyoruz. gibi Sınıf ögelerine erişmek Şuana kadar sınıfa ait değişken ve fonksiyonlara…

  • CPP 043 – Yapıcılar & Yıkıcılar

    Yapıcılar ve yıkıcılar objemizin oluşturulma ve yok edilme aşamalarında çalışan fonksiyonlarımızdır.

  • CPP 042 – OOP Nedir?

    Object Oriented Programlama (Nesne Yönelimli Programlama), en temelinde karmaşık yapıları mantıksal sınıflar oluşturarak basite indirgemektir. Şimdi 3D uzayda iki tane vektörü daha önceki bilgilerimizle toplamaya çalışalım: Sadece 2 tane vektörü toplamak istedik ama ~30 satırlık bir kodumuz oldu. İşin daha da kötüsü başka vektörleri toplamak istesem kat be kat daha fazla emek harcamamız gerekecek. Bu…

  • CPP 041 – Insertion Sort

    Bubble sort’dan sonra başka bir sıralama algoritması olan insertion sort a bakacağız.

  • CPP 040 – Union

    Aynı bellek alanında farklı zamanlarda farklı veri tiplerini tutmaya yarayan şey. Otel gibi düşünebilirsiniz. Aynı otel odasında 5 farklı müşteri farklı zamanlarda kalabilir. Örneğin odamız 4 kişilik olsun. 4 kişilik odada 4 kişi kalabilir ama 1 kişi de kalabilir. Unionda da durum aşağı yukarı böyle.