温馨提示:本文翻译自stackoverflow.com,查看原文请点击:language design - Would replacing ' :: ' with ' . ' create ambiguities in C++?
c++ language-design

language design - 将'::'替换为'。

发布于 2020-03-31 23:10:51

在C ++中,运算符::用于访问名称空间或类中的类,函数和变量。

如果使用语言规范.代替::访问对象的实例变量/方法时那样,而不是在那种情况下,那么是否会引起可能不存在的歧义::

鉴于C ++不允许变量名也是类型名,因此我认为这种情况不会发生。

澄清:我不是问为什么::选择了.,即使它也可以工作?

查看更多

提问者
Jimmy R.T.
被浏览
10
Kit. 2020-01-31 19:38

由于想使C ++与现有C代码最兼容(允许对象名称和struct标记之间发生名称冲突),因此C ++允许类名称与对象名称之间发生名称冲突。

意思就是:

struct data {
    static int member;
};

struct data2 {
    int member;
};

void f(data2& data) {
    data.member = data::member;
}

是合法代码。