Hal ini dikabarkan bahwa awal C ++ implementasi memiliki operator titik untuk akses namespace. Ada pendapat bahwa titik lebih nyaman daripada operator usus besar modern.
Apa alasan di balik memperkenalkan usus besar?
Hal ini dikabarkan bahwa awal C ++ implementasi memiliki operator titik untuk akses namespace. Ada pendapat bahwa titik lebih nyaman daripada operator usus besar modern.
Apa alasan di balik memperkenalkan usus besar?
Jawaban:
Seperti yang diamati oleh Jules itu fakta bahwa implementasi C ++ awal (CFront pra-1.0) memiliki titik untuk identifikasi ruang lingkup.
Sebuah titik juga digunakan dalam C with Classes (1980). Memang ini adalah cuplikan sederhana dari Kelas: Fasilitas Tipe Data Abstrak untuk Bahasa C 1 :
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);
}
(kode adalah contoh bagaimana fungsi anggota biasanya didefinisikan "di tempat lain")
Itu ::
adalah salah satu tambahan C dengan Kelas diperkenalkan untuk menghasilkan C ++.
Alasannya diberikan oleh Stroustrup sendiri:
Dalam C with Classes, sebuah titik digunakan untuk mengekspresikan keanggotaan suatu kelas serta mengekspresikan pemilihan anggota objek tertentu.
Ini telah menjadi penyebab beberapa kebingungan kecil dan juga dapat digunakan untuk membangun contoh-contoh yang ambigu. Untuk meringankan ini,
::
diperkenalkan berarti keanggotaan kelas dan.
dipertahankan secara eksklusif untuk keanggotaan objek
( A History of C ++: 1979−1991 [2] halaman 21 - § 3.3.1)
Bjarne Stroustrup: "Kelas: Fasilitas Tipe Data Abstrak untuk Bahasa C" - Bell Laboratories Laporan Teknis Ilmu Komputer CSTR − 84. April 1980.
Bjarne Stroustrup: "A History of C ++: 1979−1991" - Laboratorium AT&T Bell Murray Hill, New Jersey 07974.
::symbol
untuk memaksanya untuk mencarisymbol
di namespace global, bukan namespace saat ini, jadi itu setidaknya satu hal yang akan terlihat sangat membingungkan dan mungkin memperkenalkan ambiguitas sintaksis yang lebih dalam bahasa jika operator titik digunakan sebagai gantinya.