差不多一直都是。
早在标准化之前,实际上从80年代的第一次修订草案开始,就一直是这样。
令人沮丧的是,Stroupstrup的《A History of C++》并没有讨论这个问题,但是使用struct
关键字定义的称为“类”的类型早在《C++编程语言参考手册》中就可以找到,该手册是“C with类”研究阶段之后的第一个规范,因此实际上是第一个标准前的C++修订版:
类,包含各种类型的对象序列,用于操作这些对象的一组函数,以及对访问这些对象和函数的一组限制;
无出入限制的类结构
这被称为“E版”,于1984年11月发布。
在1989年的2.0版中,这已经被放宽为今天的规则:
没有默认访问限制的类结构
作为时间上的参考,我们现在所说的“C++”的第一个版本是在1998年标准化的。
按照标准是的,在实践中我也听说过编译器尝试(或者仍然尝试?) 通过区分不同优化路径的优先级,在内部对它们进行不同的处理。