Biz üst düzey olanakları kullanarak rahat rahat şöyle diyoruz:
Kod:
string s("abc");
s += "d";
Böylece s artık "abcd" oluyor... Dil, (derleyici veya kütüphane) arka planda string için herhalde şöyle bir yapı kullanılmıştır:
Kod:
struct string
{
size_t kapasite;
size_t uzunluk;
char *karakterler;
};
Bu gibi işleri C ile alt düzeyde yapmayı öğrenince, string gibi üst düzey bir olanakla karşılaşınca ister istemez arkada neler olduğu düşünülüyor.
Ali
Not: Bu arada, öyle bir yapı yazmak çok ilginçtir. İstersen çalışma olarak Dizgi isminde bir yapı ve onun örneğin şu işlevlerini yazmayı deneyebilirsin:
Kod:
typedef struct
{
size_t kapasite;
size_t uzunluk;
char *karakterler;
} Dizgi;
/* Bunlarin hepsinin donus degerleri hata kodudur;
0 ise "basarili", degilse "hatali" anlamina gelir */
// kurucu (constructor)
int Dizgi_kur(Dizgi * dizgi, const char * karakterler);
// bozucu (destructor)
int Dizgi_sonlandir(Dizgi * dizgi);
// kopyalayici (copy constructor)
int Dizgi_kopyala(Dizgi * kime, const Dizgi * kimden);
// sonuna ekleyici (append)
int Dizgi_sonuna_ekle(Dizgi * dizgi, const char * eklenecekler);
// cikisa yazdirici
int Dizgi_yazdir(const Dizgi * dizgi, FILE * cikis);
// vs.
Ali
Bookmarks