Có tin đồn rằng việc triển khai C ++ sớm đã có toán tử dấu chấm để truy cập không gian tên. Có ý kiến cho rằng dấu chấm thuận tiện hơn là toán tử dấu hai chấm hiện đại.
Lý do đằng sau việc giới thiệu dấu hai chấm là gì?
Có tin đồn rằng việc triển khai C ++ sớm đã có toán tử dấu chấm để truy cập không gian tên. Có ý kiến cho rằng dấu chấm thuận tiện hơn là toán tử dấu hai chấm hiện đại.
Lý do đằng sau việc giới thiệu dấu hai chấm là gì?
Câu trả lời:
Theo quan sát của Jules , thực tế là việc triển khai C ++ sớm (CFront trước 1.0) có một dấu chấm để nhận dạng phạm vi.
Một dấu chấm cũng được sử dụng trong C với Classes (1980). Quả thực đây là một đoạn đơn giản từ Các lớp: Một cơ sở kiểu dữ liệu trừu tượng cho ngôn ngữ 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);
}
(mã là một ví dụ về cách các hàm thành viên thường được định nghĩa "ở nơi khác")
Đây ::
là một trong những bổ sung cho C với Classes được giới thiệu để sản xuất C ++.
Lý do được đưa ra bởi chính Stroustrup:
Trong C with Classes, một dấu chấm được sử dụng để thể hiện tư cách thành viên của một lớp cũng như thể hiện lựa chọn thành viên của một đối tượng cụ thể.
Đây là nguyên nhân của một số nhầm lẫn nhỏ và cũng có thể được sử dụng để xây dựng các ví dụ mơ hồ. Để giảm bớt điều này,
::
đã được giới thiệu có nghĩa là thành viên của lớp và.
được giữ lại riêng cho tư cách thành viên của đối tượng
( Lịch sử của C ++: 1979−1991 [2] trang 21 - § 3.3.1)
Bjarne Stroustrup: "Các lớp học: Cơ sở kiểu dữ liệu trừu tượng cho ngôn ngữ C" - Bell Laboratory Laboratory Báo cáo kỹ thuật khoa học máy tính CSTR − 84. Tháng 4 năm 1980.
Bjarne Stroustrup: "Lịch sử của C ++: 1979−1991" - Phòng thí nghiệm của AT & T Bell Hill Hill, New Jersey 07974.
::symbol
đó để tìm kiếm nósymbol
trong không gian tên toàn cầu thay vì không gian tên hiện tại, do đó, ít nhất một điều sẽ trông rất khó hiểu và có thể đưa ra sự mơ hồ cú pháp hơn vào ngôn ngữ nếu toán tử chấm được sử dụng thay thế.