Kayıtlar

C++ Operatorlerin Aşırı Yüklenmesi (Operator Overloading)

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(sanal) Fonksiyonlar

Resim
Sanallık mekanizması türemiş sınıf yoluyla taban sınıfın davranışlarının değiştirilmesi için kullanılır. C++ programlama dilinde şayet taban sınıftaki bir fonksiyon virtual anahtar sözcüğü ile tanımlanmışsa fonksiyon sanal hale gelir. Bunun pratik anlamı fonksiyonun üyesi olduğu sınıftan türetme yapıldığında türeyen sınıfın söz konusu fonksiyonun davranışını değiştirebileceğidir.

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:   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:   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örevini noktaladığı durumda ~destructor() fonksiyonu otomatik çağrılarak

Public,Private,Protected

Public:  Foknsiyona sınıf içinden ve sınıf dışından erişime izin verir.Ayrıca Kalıtım ile aktarılır. Private:   Bu erişim belirteci işaretlenen öğeye sadece sınıfın içinden erişilebileceği anlamına gelir.Ve bu öğeler kalıtım yoluyla aktarılmaz.. Protected: Bu erişim belirteci işaratelenen ögeye sadece sınıfın içinden erişilebileceği fakat alt sınıflara aktarılabileceği anlamına gelmektedir.

Encapsulation,Inheritance,Polymorphism:

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. 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’ın diğerindeki özellikleri miras olarak alması için kullanılan keyword ‘extends’ dir. Birçok bilgi, hiyerarşik (yani ast-üst) sınıflandırma ile yönetilebilir hale gelir. Hiyerarşiler kullanılmaz ise, her nesnenin özelliklerinin açıkça belirtilmesi gerekir. Fakat kalıtım kullanımıyla, bir nesnenin, onu sadece kendi sınıfının içinde eşsiz yapan özelliklerini belirtmemiz yeterlidir. Polymorphism : Belli bir işlemin

Nesne İşaretçileri

C++ Nesne İşaretçileri - Nesne işaretçileri artırıldığında, diğer tür işaretçilerde olduğu gibi sıradaki nesneyi işaret ederler. - Nesne işaretçisi oluşturulduğunda bir nesne oluşturulmaz. Sadece var olan bir nesne için işaretçi oluşturulur. myclass ob(120); myclass *p; p=&ob;

Destructor(Yıkıcı veya Yok edici)

Destructor(Yıkıcı veya Yok edici) Nedir? Destructor(Yıkıcı veya Yok edici) olarak adlandırılan fonksiyonlar ise,constructor fonksiyonunun yaptıgı işin tersini yaparlar,yani gorevi biten nesneyi yok ederler.Bir sınıfın(class) uyesi olan bir degisken(orn:string tipli) gorevini noktaladigi durumda ~destructor() fonksiyonu otomatik cagrilarak,uzerinde calistigi nesneyi devre dışı bırakır.C++ programlama dili icerisinde destructor'lar bulunurken,java dilinde bu fonksiyonlar kaldırılmıştır.Nedeni ise,programlama zafiyeti acısından eger iyi tasarlanmazsa,bu fonksiyonlar programa ciddi zararlar verebilirler. Destructor() fonksiyonları olmasada,constructor() fonksiyonlari aşırı yuklenebilir.Bu durumu fonksiyon parametrelerini degistirerek uygulayabilirsiniz.Ancak bu fonksiyonlarin donus tipi belirtilmemektedir.  C++ programlama dilinde bu sistemlerin initalize edilmesi asagidaki gibi tasarlanır. class class_name { // Bir class class_name(); // Bir constructor class_name(int,float); // Aşı