Bu yazımızda C++’ın kopyala ve takas et idiyomunu ele alacağız. Bu idiyom, kaynak kullanan bir sınıfın atama operatör işlevinin yazılmasında sağlam hata güvencesi (strong
Yazılar
final bağlamsal anahtar sözcüğü
final C++11 ile gelen bir başka bağlamsal anahtar sözcük. İki yerde kullanılıyor: final anahtar sözcüğü ile bir sınıfın türetme hiyerarşisindeki son sınıf olduğu bildiriliyor: Bu durumda
şablon eş isimleri
Diyelim ki projemizde oluşturacağımız kap nesneleri için kullanmak zorunda olduğumuz bir yer ayırıcı (allocator) sınıf şablonumuz var ve standart map kaplarını aynı türden anahtar,
iota algoritması
C++11 ile gelen bu algoritmayı çok seviyorum. Bir kere ismi çok güzel: yota. Yota yunan alfabesinin dokuzuncu harfi. (Ιώτα). Çok karizmatik bir karakter. Yunanlılar
kalıtımla alınan kurucu işlevler
Elimizde kalıtım amaçlı oluşturulmuş bir sınıf var ve bu sınıftan kalıtım yoluyla yeni bir sınıf oluşturmamız gerekiyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Base { public: Base(int x); Base(int a, int b); Base(const char *p); void func(int); void foo(int); virtual ~Base(); // }; class Der : public Base { public: void derfunc(int); }; |
Artık Der sınıfının müşterileri (clients) Der
override bağlamsal anahtar sözcüğü
Taban sınıfınızınız sanal bir işlevini ezerken (override) başınıza gelebilecek olanların farkında mısınız?
1 2 3 4 5 6 7 |
class Base { public: virtual void f1(double); virtual void f2(int)const; void f3(int); // }; |
Base sınıfından türetilen Der sınıfının bildirdiği tüm işlevler Base sınıfının sanal
string sınıfının kurucu işlevleri
Bir string nesnesini hayata başlatmak için çok sayıda seçeneğimiz var. Bu yazımızda string sınıfının tüm kurucu işlevlerini, C++11 ile gelen yüklemeler de (overloads) dahil
işlevlerin aşırı yüklenmesi ne demek?
“Aşırı yükleme” bence bir çeviri hatası sonucu ne yazık ki terminolojimize yerleşti. Programlama ile ilgili kitaplarda, yazılarda, görsellerde bu terimi sık sık görür, duyar
basic_string sınıf şablonuna genel bir bakış
string başlık dosyasında yer alan, yazı işlemlerinde kullanılacak sınıfların oluşturulması amaçlı basic_string sınıf şablonu standart kütüphanemizin ve STL‘nin en önemli öğelerinden biri. Önce bu sınıf şablonunun
basic_string sınıfının size_type türü ve const static npos veri öğesi
basic_string sınıf şablonunun en önemli içsel türlerinden (nested types) biri size_type türüdür. size_type türünün bildirimi şu şekildedir:
1 2 3 4 5 6 7 8 9 10 |
namespace std { template <typename CharType, typename TraitsType = char_traits<CharType>, typename AllocatorType = allocator<CharType> > class basic_string { public: // typedef typename Allocator::size_type size_type; static const size_type npos = -1; }; |
Bildirimden de görüldüğü gibi aslında size_type üçüncü