Neden nokta yerine iki nokta üst üste?


19

Erken C ++ uygulamalarının ad alanına erişim için nokta operatörüne sahip olduğu söyleniyor . Noktanın, modern çift kolonlu operatörden daha uygun olduğuna dair bir görüş var.

Çift kolonun kullanılmasının ardındaki neden neydi?


3
Başımın en üstünde, C ++ mevcut ad alanı yerine global ad alanında ::symbolarama yapmaya zorlamanızı sağlar symbol, bu yüzden çok kafa karıştırıcı görünecek ve muhtemelen dile daha sözdizimsel belirsizliği getiren en az bir şey yerine nokta operatörü kullanıldı.
Ixrec

14
:: C ++ ad alanının :: çözünürlük :: operatörünün :: horribly :: çirkin çoğalması :: her yerde :: :: :: kolon :: kanser olarak bilinir.
Mason Wheeler

1
Sanırım anlambilimsel analizde karışıklığa neden oldu. Nokta, oldukça benzer bir kavram olan ve izole edilmesi zor olabilecek yöntem adlarının öneklenmesi için de kullanılır. Bunu düzeltmenin açık bir yolu.
Rápli András


5
Mason Wheeler'ın C üzerindeki anlamsız saldırılarının korkunç çirkin çoğalmasının adı yok çünkü böyle bir kötülük bir isimle onurlandırılmamalıdır!
Jerry Coffin

Yanıtlar:


14

Jules tarafından gözlemlendiği gibi , erken C ++ uygulamalarının (CFront pre-1.0) kapsam tanımlaması için bir noktaya sahip olduğu bir gerçektir.

Sınıflarla birlikte C de (1980) bir nokta kullanıldı . Gerçekten de bu, Sınıflar'dan basit bir snippettir : C Dili 1 için Soyut Bir Veri Türü Tesisi :

class stack {
    char    s[SIZE];  /* array of characters */
    char *  min;      /* pointer to bottom of stack */
    char *  top;      /* pointer to top of stack */
    char *  max;      /* pointer to top of allocated space */
    void    new();    /* initialization function (constructor) */
public:
    void push(char);
    char pop();
};

char stack.pop()
{
    if (top <= min) error("stack underflow");
    return *(−−top);
}

(kod, üye işlevlerinin tipik olarak "başka yerlerde" nasıl tanımlandığının bir örneğiydi)

::Eklemeler biri sınıfları ile C üretmek C ++ kişiye.

Nedeni Stroustrup'un kendisi tarafından verilir:

Sınıflarla C'de, bir sınıfın üyeliğini ifade etmek ve belirli bir nesnenin bir üyesinin seçimini ifade etmek için bir nokta kullanılmıştır.

Bu bazı küçük karışıklıkların sebebiydi ve belirsiz örnekler oluşturmak için de kullanılabilir. Bunu hafifletmek ::için, sınıfın ortalama üyeliği için tanıtıldı ve .sadece nesnenin üyeliği için tutuldu

( C ++ Tarihçesi: 1979-1991 [2] sayfa 21 - § 3.3.1)


  1. Bjarne Stroustrup: "Sınıflar: C Dili için Soyut Bir Veri Türü Tesisi" - Bell Laboratuvarları Bilgisayar Bilimi Teknik Raporu CSTR − 84. Nisan 1980.

  2. Bjarne Stroustrup: "C ++ Tarihçesi: 1979−1991" - AT&T Bell Laboratuvarları Murray Hill, New Jersey 07974.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.