6.47.Operatorların yenidən yüklənməsi Operatorların yenidən yüklənməsi funksiyaların yenidən yüklənməsinə oxşardır. Faktiki olaraq operatorların yüklənməsi funksiyaların yüklənməsinin bir növüdür. Sadəcə olaraq bir neçə əlavə qaydalardan istifadə edilir.
Operator yenidən yüklənən zaman onun ilkin qiyməti itmir. Əksinə operatorun təyin olunduğu siniflərlə əlaqəli əlavə qiymətlər alır. Operatorun yenidən yüklənməsi üçün operator-funksiya yaradılır. Operator funksiya onun təyin olunduğu sinfin üzvü olur.
Aşağıda sinfin üzvü olan operator-funksiyanın əsas forması göstərilmişdir.
qaytarılan_tip sinfin_adı::operator#(arqumentlərin_siyahısı) { //yerinə yetirilən əməliyyatlar } Çox zaman operator-funksiyanın qaytardığı qiymət sinif tipinə malik olur. Operator-funksiyanın qiymət digər tiplərə də aid ola bilər.
Operator-funksiyanın əsas formasına #-işarənin əvəzinə yüklənən operatoru qoymaq lazımdır. Məsələ, əgər +operatoru yüklənərsə, onda bu halda funksiyada operator + adı olmalıdır. Arqumentlərin siyahısı operator-funksiyanın realizasiyasından və yüklənən operatorun tipindən asılıdır.
Operatorların yüklənməsinin iki vacib məhdudiyyətini nəzərə almaq lazımdır. Birincisi, operatorların üstünlük dərəcələrini dəyişmək olmaz. Operatorda olan operandların sayını dəyişmək olmaz. Məsələ, /- operatorunu bir operand üçün yükləmək olmaz. C++ dilinin operatorlarının çoxunu yükləmək olar. Aşağıda yükləmək mümkün olmayan bir neçə operator göstərilmişdir:
. :: .* ? C++ dilində operator anlayışı geniş anlayışdır. Bu anlayışa aşağıdakilar da aiddir:
[ ]-indeksləşmə operatoru, ( )-funksiyalara müraciət operatoru, . (nöqtə)-operatoru, new və delete operatorları. Biz burada adi operatorların yüklənməsinə baxacayıq.
Biz artıq girişi-çıxışı reallaşdıran <> operatorlardan istifadə etmişik. Giriş-çıxışın realizasiyası üçün bu operatorların yenidən yüklənməsi onların ənənəvi funksiyaları olan sola doğru və sağa doğru sürüşdürmə əməliyyatlarının yerinə yetirilməsinə mane olmur.
Operator funksiyalar susma prinsipinə görə parametrlərə malik olmurlar.