Kayıtlar

C++ Operatorlerin Aşırı Yüklenmesi

Resim
C++’ da +,-,*,!,++ gibi operatörler fonksiyonlar yazılarak bu operatörlere yeni işlevler yüklenebilir. Fakat sadece C++’ da zaten var olan operatörlere aşırı yükleme yapılabilir. Örneğin üs(^) operatörüne aşırı yükleme yapılamaz. Fonksiyonlar tanımlanırken operatörün orjinalinde var olan operand sayısı değiştirilemez. Yani toplama için tek operand veremezsiniz yine en az 2 operand vermeniz gerekmektedir. Ayrıca öncelik sıralamalarında bir değişiklik olmaz yine aynı şekilde öncelikleri vardır. Aşağıdaki örnekte verilen kodlama ile + operatoru iki karmaşık sayıyı toplamak için aşırı yüklenmiştir.

C++ Virtual nedir? Ne işe yarar?

Sanal fonksiyonları çok biçimli programlama tekniği (polymorphism) ile kullanılır. Bir sınıfın fonksiyonunun miras alan diğer sınıflar tarafından kullanılmasını sağlamak için virtual anahtar kelimesiyle tanımlarız. Bunun nedenini bir örnek ile açıklayalım. Diyelim ki bir kare sınıfımız var. Bu sınıf için alan hesaplayabiliriz, çizim yaptırabiliriz , çevre hesaplayabiliriz. Diğer bir sınıf olan üçgen ise kare’den miras alsın. Üçgen içinde aynı fonksiyonları kullanabiliriz.Bunu yapabilmemiz için kare sınıfımızdaki fonksiyonlarımızı virtual anahtar kelimesiyle deklare etmemiz gerekir yani prototiplerini virtual ön eki ile yazarız. Örnek  ile olayı biraz somutlaştıralım. class dortgen { public: virtual int alan(int taban, int yukseklik){ return taban*yukseklik; } int cevre(int taban, int yukseklik){ return 2*(taban+yukseklik); } }; class ucgen : public dortgen { public: int alan(int taban, int yukseklik){ return (taban*yukseklik)/2; }

Sınıfın Tanımları (Class Definition)

Sınıfın Tanımları (Class Definition) Class: Nesne yönelimli programlama dillerinde nesnelerin özelliklerini, davranışlarını ve başlangıç durumlarını tanımlamak için kullanılan şablonlara verilen addır. Public: Bu erişim türü ile tanımlanmış sınıf üyelerine her yerden erişim izni verilmiş olur. Private: Bu erişim türünde tanımlanmış üyelere sadece aynı sınıf içerisinde tanımlanmış diğer üyeler tarafından erişim izni verilmiş olur. Protected: Bu erişim türünde tanımlanmış üyelere tanımlandık sınıf ve bu sınıftan türetilmiş diğer sınıflardan erişim izni verilmiş olur. Constructors (Kurucular): Bir sınıfın örneği oluşturulduğunda kendiliğinden çalışan özel bir metottur. Sınıf ile aynı ada sahip olmak zorundadır, parametreler alabilir ama geri değer döndürmez. Tüm sınıfların bir kurucusu olmak zorundadır. Destructor (Yıkıcı / Yok Edici): Constructor fonksiyonunun yaptığı işin tersini yaparlar. Görevi biten nesneyi yok ederler. Bir sınıfın(class) üyesi olan bir değişken göre

NYP'nin Öğeleri(Encapsulation,Inheritance,Polymorphism)

NYP'nin Öğeleri Encapsulation : Bir nesnenin bazı özellik ve işlevlerini diğerlerinden saklanabilmesi, erişimin sınırlandırılabilmesidir. Yani private tanımladığımız alanları kullanıcıdan saklamamız anlamına gelir ki zaten kullanıcının bunu kullanmasına gerek yoktur ve hatta kullanmaması gerekmektedir. Encapsulation’u bir telefona benzetebiriz. Telefonun düğmeleri ortada (‘public’) dururuken bir çok parça telefonun içerisinde gizildir (private). Zaten kullanıcının bunları kullanması gerekmez hatta dokunmaması gerekir. Aynı şekilde bir nesnenin kendinde bulunan bileşenleri kötü niyetli veya bilinçsiz kullanımlardan gizlemesi gerekir. Encapsulation programcıya nesneleri koruma gücünü verir.. Inheritance : Kalıtım (inheritance), bir nesnenin diğer bir nesnenin özelliklerini kazanması işlemidir. Diğer bir deyişle bir class’ın başka bir class’daki property ve method’lara sahip olmasına inheritance denir.. Bu önemlidir, çünkü hiyerarşik sınıflandırmayı destekler. Bir class’

Public,Private,Protected

Public:  Bu erişim türü ile tanımlanmış sınıf üyelerine her yerden erişim izni verilmiş olur. Private:  Bu erişim türünde tanımlanmış üyelere sadece aynı sınıf içerisinde tanımlanmış diğer üyeler tarafından erişim izni verilmiş olur. Protected:  Bu erişim türünde tanımlanmış üyelere tanımlandık sınıf ve bu sınıftan türetilmiş diğer sınıflardan erişim izni verilmiş olur.

Örnek Program

- Merhaba C++ Yazalım Genelde programlama giriş yapan herkes “Merhaba Dünya” yazarak başlar, bizde biraz farklılık yapalım ve çalıştığında ekranda “Merhaba C++” yazan programı yapalım. 1 2 3 4 5 6 7 8 9 10 // ilk program #include<iostream> using namespace std ; int main ( ) { cout << "merhaba C++" ; return 0 ; }

New Operatörü ve Delete Operatörü

Dinamik Bellek Yönetimi Şu ana kadar küçük boyutta değişkenler kullandık ancak eğer belleğin daha büyük boyuttaki değişkenler için kullanımı gerekecekse dinamik bellek yönetimini kullanmak daha pratik olacaktır. Bu nedenle new ve delete operatörlerini kullanacağız. NEW Operatörü  Bellekten yer atırmak istenildiği zaman new operatörü kullanılır. Bir tamsayı gösteren işaretçi için bir tamsayılık yer aşağıda ki şekilde bellekte kendisine yer edinir. int *sayi; sayi=new int; Eğer değişkene başlangıç değeri de vermek istiyorsak; Sayi=new int(10); //sayi değişkenine 10 değerini atamış oluruz. Eğer bellekte bir dizi oluşturacak şekilde yer ayırmak istiyorsak: int *dizi; dizi=new int[3]; //bellekte 3 elemanlı bir dizi için yer ayırır ve bellekte bu dizinin bulunduğu yerin başlangıç adresini dizi işaretçisine atar. Ancak dizilerdeki elemanlara başlangıç adresi veremiyoruz. DELETE Operatörü  new operatörü ile bir değişken için yer ayırdığımızı varsayalım. Ayırdığımız bu yeri geri vermek