为什么是“初始化”在std :: ios_base ::初始大写?

除了std::ios_base::Init之外,标准C ++库中的所有名称都是小写字母。 为什么是这样?

在IOStream类的早期草稿中,您可以看到ios_base最初不存在, basic_ios是基类,负责Init和其他后来分成ios_base成员。

basic_ios也有(并且仍然有 )一个init函数,虽然这两个名字不一定是不同的,大概是为了避免混淆,决定命名类Init和函数init 。 而且,如果没有这种区分,在使用这个类的时候,下面的东西是必须的:

 struct ios_base { struct init{}; void init(); }; ios_base::init i1; // error struct ios_base::init i2; // ok 

负责初始化标准stream的独立类的想法至less可以回到CFront 3.0,正如Iostream_init在这个头文件中可以看到的Iostream_init 。 在某些时候,决定不仅要使该类成为ios / basic_ios / ios_base的成员,还要将其重命名为Init

无论如何,即使考虑到它们最终被放置在不同的class级中,也是有意义的。 他们本来可以select完全独立的名字,但是据推测Init / init被认为是描述类和函数做什么的最好的语义select,而且也有一个机会,就是模仿了旧的Iostream_init ,大写字母I