gpt4 book ai didi

c++ - 用 '::' 替换 ' . ' 会在 C++ 中产生歧义吗?

转载 作者:行者123 更新时间:2023-12-01 08:18:28 26 4
gpt4 key购买 nike

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

如果语言规范使用 .而不是 ::在这些情况下,就像访问对象的实例变量/方法一样,这会导致:: 不存在的可能的歧义。 ?

鉴于 C++ 不允许变量名也是类型名,我想不出可能发生的情况。

澄清:我不是问为什么::被选中 . ,如果它也可以工作?

最佳答案

由于试图使 C++ 与现有的 C 代码大部分兼容(允许对象名称和结构标记之间的名称冲突),C++ 允许类名称和对象名称之间的名称冲突。

这意味着:

struct data {
static int member;
};

struct data2 {
int member;
};

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

是合法代码。

关于c++ - 用 '::' 替换 ' . ' 会在 C++ 中产生歧义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60002767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com