SORU
14 Mart 2009, CUMARTESİ


'' bir işaretçi neden ve nasıl bir başvuru?

Bu soru C pros and cons cevaplar okuyordum ve yorum okurken bu şüphe var.

programcılar sık sık "bu" işaretçi ama bir referans değil. bu kafa karıştırıcı bulabilirsiniz başka bir karışıklığa neden "Merhaba" değil tipi std::string ama veren bir char sabit* (işaretçi) (sonra diziye işaretçi dönüşüm) – Johannes Schaub - litb 22 Aralık '08 1:56

(Daha sonra), diğer diller gibi aynı kuralları kullanmaz gösteriyor. – le dorfier 22 Aralık '08 3:35

"Bu" çok önemsiz bir konu olsa da şu ... derim Ve ayy, tanımsız davranış benim örneklerde birkaç hataları yakalamak için teşekkürler. Hakkında bilgi ne ... kafam karıştı :) boyutu ilkinde bir şey ile ilgisi var. Bir işaretçi sadece dışarıda ayrılmış bellek noktası için izin verilmez – Aralık 22 jalf '4:18 08

Bu sabit bir poiner? – Aralık 22 '6:35 08 . yesraaj

eğer bu yöntemi int getFoo ise sürekli olabilir() sabit; <- getFoo kapsamında, "bu" sabittir ve bu nedenle salt okunur. Bu böcekler engeller ve nesne değişmeyecek arayan garanti belli bir düzeyde sağlar. – Doug T. Dec 22 '08 16:42

Yeniden Atama yapamazsın "bu". ben.e yapamazsınız "bu = &diğer; Bu bir rvalue. çünkü", ama bu tip T tip T sabit değil*. ben.e sabit olmayan bir gösterici. sabit bir yöntemde, sabit bir işaretçi. T inş . ama kendisi işaretçi nonconst – Johannes Schaub - litb Dec 22 '17:53 08

düşün "bu" şöyle: derleyici "this_" işaretçi olarak itiraz ve yapar "bu" sözcüğünü oluşturur. bu (this_ 0) define # ""(this_ 0) bir rvalue çünkü. bu atayabilirsiniz. tabii ki (bu makro yok), ama bunu anlamak için yardımcı olabilir. – Johannes Schaub - litb Dec 22 '17:55-08

Benim sorum, neden this bir işaretçi bir referans değil mi? Bir işaretçi yapmak için herhangi bir sebebi var mı?


this bir referans olmaktan neden biraz daha argümanlar mantıklı olur:

  • More Effective C düşünün Item 1: geçerli bir nesne var olmayan bir NULL (benim yorumum) yani garanti ne zaman başvuru kullanın.
  • Ayrıca, başvurular işaretçiler bellek başıboş bir işaretçi ile berbat edemeyiz, çünkü bu şekilde daha güvenli olarak kabul edilir.
  • Üçüncü olarak, erişim referanslar için sözdizimi (.) biraz erişme işaretçiler (-> (*)) Daha iyi ve daha kısa.

CEVAP
14 Mart 2009, CUMARTESİ


Dili ilk gerçek kullanıcılar ile erken sürümlerde gelişen iken, başvurular, yalnızca işaretçileri vardı. Başvurular operatör yükleme başvurular sürekli çalışma gerektirir eklendi ilave edildi.

this kullanan biri kendisi için bir işaretçi almak için bir nesne için. Eğer başvuru olsaydı, &this yazmak zorunda kalırız. Atama operatörü yazarken diğer taraftan, biz return this gibi daha basit görünecektir return *this,. Eğer boş bir levha varsa, bunu iki şekilde ileri sürülebilir. Ama C yavaş yavaş kullanıcıların bir topluluk (en başarılı şey gibi) yorumlarına yanıt olarak gelişti. Geriye uyumluluk değeri dezavantajları this kaynaklanan bir referans ya da gösterici olmak/tamamen küçük avantajları bunaltıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • alex maybury

    alex maybury

    20 Aralık 2007
  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • waterfairy17

    waterfairy17

    9 Aralık 2007