为什么 "Init" 在 std::ios_base::Init 中是大写的?
Why is "Init" in std::ios_base::Init uppercase?
标准 C++ 库中的所有名称都是小写的,除了 std::ios_base::Init
。这是为什么?
在 IOStream classes 的早期 draft 中,您可以看到 ios_base
最初不存在,basic_ios
是基础 class 并且负责 Init
和其他成员,后来分成 ios_base
.
basic_ios
也有(和 still has)一个 init
函数,虽然这两个名称不一定必须不同,但大概是为了避免混淆,决定命名 class Init
和函数 init
。此外,如果没有这种区别,在使用 class:
时将需要类似以下内容
struct ios_base
{
struct init{};
void init();
};
ios_base::init i1; // error
struct ios_base::init i2; // ok
让一个单独的 class 负责初始化标准流的想法至少可以追溯到 CFront 3.0,Iostream_init
在 this header.在某些时候,决定不仅使 class 成为 ios
/ basic_ios
/ ios_base
的成员,而且还应将其重命名为 Init
.
在任何情况下,消除两者的歧义都是有意义的,即使考虑到它们最终被放在不同的 classes 中这一事实。他们本可以选择完全不同的名称,但据推测 Init
/ init
被认为是描述 class 和函数作用的最佳语义选择,而且也有可能它只是模仿较旧的 Iostream_init
,出于某种原因也以大写 I
.
开头
标准 C++ 库中的所有名称都是小写的,除了 std::ios_base::Init
。这是为什么?
在 IOStream classes 的早期 draft 中,您可以看到 ios_base
最初不存在,basic_ios
是基础 class 并且负责 Init
和其他成员,后来分成 ios_base
.
basic_ios
也有(和 still has)一个 init
函数,虽然这两个名称不一定必须不同,但大概是为了避免混淆,决定命名 class Init
和函数 init
。此外,如果没有这种区别,在使用 class:
struct ios_base
{
struct init{};
void init();
};
ios_base::init i1; // error
struct ios_base::init i2; // ok
让一个单独的 class 负责初始化标准流的想法至少可以追溯到 CFront 3.0,Iostream_init
在 this header.在某些时候,决定不仅使 class 成为 ios
/ basic_ios
/ ios_base
的成员,而且还应将其重命名为 Init
.
在任何情况下,消除两者的歧义都是有意义的,即使考虑到它们最终被放在不同的 classes 中这一事实。他们本可以选择完全不同的名称,但据推测 Init
/ init
被认为是描述 class 和函数作用的最佳语义选择,而且也有可能它只是模仿较旧的 Iostream_init
,出于某种原因也以大写 I
.