0Pricing
C++ Academy · Ders

Değerle Geçirme ve Referansla Geçirme

Değerle ve referansla geçirme arasındaki anlamsal ve performans farklarını karşılaştırın

Değerle Geçirme ve Referansla Geçirme, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Değere Göre Geçirme Özeti

Bir bağımsız değişkeni değere göre geçirdiğinizde, işlev bir kopya alır. İşlev içindeki değişiklikler çağıranı etkilemez.

void increment(int x) {
    x++;          // modifies the copy
}

int n = 5;
increment(n);
std::cout << n;   // still 5

Başvuruya Göre Geçirme

Parametre listesinde & kullanarak başvuruya göre geçirin. İşlev, çağıranın değişkeni üzerinde doğrudan çalışır.

void increment(int& x) {
    x++;
}

int n = 5;
increment(n);
std::cout << n;   // now 6

Neden Başvuruya Göre Geçirmeli

İki neden vardır:

  • Kopyalamaktan kaçınmak — büyük nesnelerde performansı artırır
  • Çağıranın değişkenini değiştirmek — anlamı belirler

Const Başvuru: İki Dünyanın En İyisi

const başvuru, kopyalamayı önler ve işlevin nesneyi değiştirmesine izin vermez. Önemsiz olmayan giriş parametreleri için kullanın.

void printName(const std::string& name) {
    std::cout << name;
}

Pratik Kurallar

İşlev parametreleri için:

  • Kopyalanması ucuzsa (int, double, pointer) → değere göre geçirin
  • Kopyalanması pahalı ve salt okunursa → const T&
  • İşlev çağıranın verilerini değiştiriyorsa → T&

İşaretçiye Göre Geçirme

İşaretçiler de çağıranın değişkenini değiştirmenize olanak tanır; ancak çağıran, adresi & ile açıkça almalıdır. Böylece amaç görünür olur.

void increment(int* x) {
    (*x)++;
}

int n = 5;
increment(&n);

Başvuru ve İşaretçi Parametresi

Değerin her zaman gerekli olduğu durumlarda başvurular daha uygundur. Bağımsız değişken isteğe bağlı olduğunda işaretçiler uygundur; atlamak için nullptr geçirin.

Değere Göre Döndürme

Değere göre döndürme varsayılan seçenektir. RVO (Dönüş Değeri Optimizasyonu) ve taşıma semantiği sayesinde bu yöntem genellikle başvuru döndürmek kadar hızlıdır ve daha güvenlidir.

Başvuruya Göre Döndürme

İşlev, çağrıdan daha uzun yaşayan mevcut bir nesneyi döndürüyorsa başvuru döndürün (örneğin bir kapsayıcının üyesini). Yerel bir değişkene hiçbir zaman başvuru döndürmeyin.

Şablonlarda Geçirme Biçimlerini Birleştirme

Şablonlarda değer kategorilerini korumak için genellikle evrensel başvurular (T&&) ve std::forward kullanılır. Bu konu Taşıma Semantiği dersinde ele alınacaktır.

Yaygın Hata: Dilimleme

Türetilmiş sınıfları bir temel parametreye başvuru (veya işaretçi) olarak geçirin. Değere göre geçirmek, nesnenin türetilmiş kısmını kırpar.

class Base { /* virtual */ };
class Derived : public Base { /* members */ };

void takeByValue(Base b);    // SLICES Derived!
void takeByRef(Base& b);     // OK

Hızlı Kontrol

İşlevin yalnızca okuduğu büyük bir std::string nasıl geçirilmelidir?

Özet

Değere göre geçirme kopyalar; başvuruya göre geçirme paylaşır. Salt okunur büyük nesneler için const T&, çağıranın verilerini değiştirmek için T&, küçük yerleşik türler içinse değere göre geçirmeyi kullanın.

Sıkça Sorulan Sorular

“Değerle Geçirme ve Referansla Geçirme” dersi ücretsiz mi?

Evet — “Değerle Geçirme ve Referansla Geçirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Değerle Geçirme ve Referansla Geçirme” dersinde ne öğreneceğim?

Değerle ve referansla geçirme arasındaki anlamsal ve performans farklarını karşılaştırın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Değerle Geçirme ve Referansla Geçirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Değişkenler İçin Referanslar ve Takma Adlar
  2. Değerle Geçirme ve Referansla Geçirme
  3. const Referansları ve Ne Zaman Kullanılacakları
  4. Referansların Yaşam Süresi ve Geçersiz Referanslar
← C++ Academy Sayfasına Dön