为什么C++03允许数据成员与类同名?

问题描述 投票:0回答:1

C++98标准C++03标准之间,做了一个有趣的改变:

struct S {
    int S;
};

此代码在 C++03 及更高版本中有效,但在 C++98 中格式错误。 具体来说,[class.mem] 第 13 段禁止 all 数据成员与 C++98 中的类同名,但是这条规则被放宽,这样如果没有用户声明的构造函数,你可以有一个非-同名静态数据成员。

这背后的动机是什么? 其中涵盖哪些重要用例需要修改标准?

c++ language-design c++03 c++98
1个回答
0
投票

这是来自DR80。换句话说,

static
最初是为了与 C 一致,但在 96 年 5 月和 96 年 9 月工作文件之间,标准发生了变化,并且
static
被删除。 C++03 通过缺陷报告从语言中恢复了该错误。

© www.soinside.com 2019 - 2024. All rights reserved.