CodeBlanks Logo Icon CodeBlanks

Özet - Operatör aşırı yükleme

aritmetik, karşılaştırma ve stream operatörlerini birleştirerek bir Vector sınıfı yazarsın.

Özet - Operatör aşırı yükleme

Bu grupta operatör aşırı yüklemeyi öğrendin. operator kelimesi ve sembol ile fonksiyon tanımlarsın; böylece sınıfın yerleşik türler gibi çalışır.

Aritmetik (+, -), karşılaştırma (==, <), stream (<<) ve spaceship (<=>) operatörlerini gördün. Şimdi iki ödevle öğrendiklerini pekiştireceksin: önce toplama operatörü, sonra eşitlik karşılaştırması.

Uygulama Vector2'ye operator+ ekle

Başlangıç kodundaki Vector2 sınıfına operator+ ekle: gövdesi return Vector2(x + other.x, y + other.y);. main içinde a + b'yi hesapla ve sonucu yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

class Vector2 {
public:
    int x;
    int y;
    Vector2(int x_, int y_) : x(x_), y(y_) {}
    // Toplama operatörünü ekle
};

int main() {
    Vector2 a(2, 3);
    Vector2 b(4, 5);
    // a + b'yi hesapla ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

class Vector2 {
public:
    int x;
    int y;
    Vector2(int x_, int y_) : x(x_), y(y_) {}
    Vector2 operator+(const Vector2& other) const {
        return Vector2(x + other.x, y + other.y);
    }
};

int main() {
    Vector2 a(2, 3);
    Vector2 b(4, 5);
    Vector2 c = a + b;
    std::cout << c.x << " " << c.y;
    return 0;
}

Beklenen çıktı

6 8

Uygulama Score'a operator== ekle

Başlangıç kodundaki Score sınıfına operator== ekle: gövdesi return value == other.value;. main içinde a == b'yi karşılaştır; eşitse "Eşit", değilse "Farklı" yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

class Score {
public:
    int value;
    Score(int v) : value(v) {}
    // Eşitlik operatörünü ekle
};

int main() {
    Score a(7);
    Score b(7);
    // a == b karşılaştır ve sonucu yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

class Score {
public:
    int value;
    Score(int v) : value(v) {}
    bool operator==(const Score& other) const {
        return value == other.value;
    }
};

int main() {
    Score a(7);
    Score b(7);
    if (a == b) {
        std::cout << "Eşit";
    } else {
        std::cout << "Farklı";
    }
    return 0;
}

Beklenen çıktı

Eşit

Bölüm sonu

Operatör aşırı yüklemeyi tamamladın. Artık operator+, operator-, operator==, operator<< ve operator<=> tanımlayabiliyorsun.

Sınıfların yerleşik türler gibi doğal çalışmasını sağladın. Sonraki grupta orta seviye final projesi seni bekliyor; orada OOP, şablon, STL ve dosya I/O'yu bir araya getireceksin. Operatör aşırı yükleme, bu projede de işine yarayacak.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 operator+ hangi operatörü tanımlar?

main.cpp
Vector2 operator+(const Vector2& other) const;
  • Çıkarma
  • Toplama Doğru cevap
  • Karşılaştırma
  • Çıktı

Açıklama: operator+ toplama operatörüdür.

2 Operatör fonksiyonu adını tamamla

Soru
Vector2 ____(const Vector2& other) const { return Vector2(x + other.x, y + other.y); }
Cevap
Vector2 operator+(const Vector2& other) const { return Vector2(x + other.x, y + other.y); }

Açıklama: operator+ toplama operatörüdür.

Orta seviye bölümündeki tüm dersler