C++11: std::move
  • #c++11
  • #c++

  • Merhabalar, bu yazıda C++11 sürümünde dile eklenmiş std::move keywordünü inceleyeceğiz.


    Nasıl kullanılır?

    std::string a = "selam";
    std::string b = "merhaba";
    
    // a = "selam"
    // b = "merhaba"
    
    b = a;
    
    // a = "selam"
    // b = "selam"
    
    
    b = std::move(a);
    
    // a = ""
    // b = "selam"
    

    Ne işe yarar?

    Bir nesneyi taşıyarak başka bir değişkene aktarmaktadır. Normal eşitlemeden farkı ise, nesnenin taşınmasıyla eski değişkene artık ihtiyaç duyulmayan durumlarda kullanılır.

    std::vector<Mesaj> mesajlar;
    
    void yeniMesajGeldi(Mesaj mesaj)
    {
        // 'mesaj' nesnesi kopyalanır ve hem 'mesaj', hem 'mesajlar.at(i)' ile erişilebilir.
        mesajlar.push_back(mesaj);
        
        // 'mesaj' nesnesi taşınır. Artık 'mesaj' ile erişilemez. Sadece dizide vardır.
        mesajlar.push_back(std::move(mesaj));
    }
    

    Yukarıdaki örnekte bir diziyi doldururken elemanların sadece dizide var olmaya devam etmesini istediğimiz için std::move kullandık.

    __

    Evet std::move bu kadarcık.

    Bir sonraki yazıda görüşmek üzere :)

    Esenlikler!

    Copyright © 2026 Emin Fedar