Answers:
正如Jules所观察到的那样,事实上,早期的C ++实现(CFront 1.0版之前)都有一个用于范围识别的点。
在C with Classes(1980)中也使用了一个点。确实,这是类 的简单片段: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);
}
(该代码是通常如何在其他地方定义成员函数的示例)
的::
是补充的一个带类的C引入,以产生C ++。
原因由Stroustrup本人给出:
在带有类的C中,点被用来表示类的成员以及对特定对象的成员的选择。
这是造成一些小混乱的原因,也可以用来构造模棱两可的示例。为了减轻这种情况,
::
引入它是为了表示类的成员资格,并且.
仅保留其作为对象的成员资格。
(C ++的历史:1979−1991 [2]第21页-§3.3.1)
Bjarne Stroustrup:“类:C语言的抽象数据类型工具”-贝尔实验室计算机科学技术报告CSTR-84。1980年4月。
Bjarne Stroustrup:“ C ++的历史:1979-1991年”-AT&T贝尔实验室Murray Hill,新泽西州07974。
::symbol
强制其symbol
在全局名称空间而不是当前名称空间中进行查找,因此至少这是一件看起来非常令人困惑的事情,并且可能会在语言中引入更多的语法歧义。改为使用点运算符。