为什么是“初始化”在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